// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning , def_amount_of_apemen ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , respawning_time_delay_min , respawning_time_delay_max ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; export def_difficulty_level , difficulty_level ; export ardestroyedBuildings ; export AIDepotDest ; export Gossudarov , arabianMines ; export randomedColors ; export sideP1 , sideP2 , sideP3 , sideP4 ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; export def_Tech_Level , def_upgrade_tl , tech_level , initial_level ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 25
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 23
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 26
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 24
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 205
// begin Your_Side := 1 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 1
  69: ST_TO_ADDR
// Side_Positions := [ 1 , 2 , 0 , 0 , 0 , 3 , 0 , 4 ] ;
  70: LD_ADDR_EXP 25
  74: PUSH
  75: LD_INT 1
  77: PUSH
  78: LD_INT 2
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 3
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 4
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 23
 113: PUSH
 114: LD_INT 0
 116: PUSH
 117: LD_INT 0
 119: PUSH
 120: LD_INT 0
 122: PUSH
 123: LD_INT 0
 125: PUSH
 126: LD_INT 0
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 3 , 3 , 0 , 0 , 0 , 3 , 0 , 3 ] ;
 148: LD_ADDR_EXP 26
 152: PUSH
 153: LD_INT 3
 155: PUSH
 156: LD_INT 3
 158: PUSH
 159: LD_INT 0
 161: PUSH
 162: LD_INT 0
 164: PUSH
 165: LD_INT 0
 167: PUSH
 168: LD_INT 3
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 3
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 , 2 ] ] ;
 187: LD_ADDR_EXP 24
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: LD_INT 2
 197: PUSH
 198: EMPTY
 199: LIST
 200: LIST
 201: PUSH
 202: EMPTY
 203: LIST
 204: ST_TO_ADDR
// end ; for i := 1 to 8 do
 205: LD_ADDR_VAR 0 2
 209: PUSH
 210: DOUBLE
 211: LD_INT 1
 213: DEC
 214: ST_TO_ADDR
 215: LD_INT 8
 217: PUSH
 218: FOR_TO
 219: IFFALSE 257
// if Multiplayer_GetPlayerIsSpec ( i ) then
 221: LD_VAR 0 2
 225: PPUSH
 226: CALL_OW 530
 230: IFFALSE 255
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 232: LD_ADDR_EXP 25
 236: PUSH
 237: LD_EXP 25
 241: PPUSH
 242: LD_VAR 0 2
 246: PPUSH
 247: LD_INT 0
 249: PPUSH
 250: CALL_OW 1
 254: ST_TO_ADDR
 255: GO 218
 257: POP
 258: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 259: LD_ADDR_EXP 28
 263: PUSH
 264: LD_INT 0
 266: PUSH
 267: LD_INT 0
 269: PUSH
 270: LD_INT 0
 272: PUSH
 273: LD_INT 0
 275: PUSH
 276: LD_INT 0
 278: PUSH
 279: LD_INT 0
 281: PUSH
 282: EMPTY
 283: LIST
 284: LIST
 285: LIST
 286: LIST
 287: LIST
 288: LIST
 289: ST_TO_ADDR
// for i := 1 to 8 do
 290: LD_ADDR_VAR 0 2
 294: PUSH
 295: DOUBLE
 296: LD_INT 1
 298: DEC
 299: ST_TO_ADDR
 300: LD_INT 8
 302: PUSH
 303: FOR_TO
 304: IFFALSE 351
// if Side_Positions [ i ] then
 306: LD_EXP 25
 310: PUSH
 311: LD_VAR 0 2
 315: ARRAY
 316: IFFALSE 349
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 318: LD_ADDR_EXP 28
 322: PUSH
 323: LD_EXP 28
 327: PPUSH
 328: LD_EXP 25
 332: PUSH
 333: LD_VAR 0 2
 337: ARRAY
 338: PPUSH
 339: LD_VAR 0 2
 343: PPUSH
 344: CALL_OW 1
 348: ST_TO_ADDR
 349: GO 303
 351: POP
 352: POP
// Team_Game := Side_Teams [ your_side ] ;
 353: LD_ADDR_EXP 27
 357: PUSH
 358: LD_EXP 23
 362: PUSH
 363: LD_OWVAR 2
 367: ARRAY
 368: ST_TO_ADDR
// if Multiplayer then
 369: LD_OWVAR 4
 373: IFFALSE 429
// begin def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 375: LD_ADDR_EXP 2
 379: PUSH
 380: LD_INT 1
 382: PPUSH
 383: CALL_OW 426
 387: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 388: LD_ADDR_EXP 3
 392: PUSH
 393: LD_INT 2
 395: PPUSH
 396: CALL_OW 426
 400: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 401: LD_ADDR_EXP 6
 405: PUSH
 406: LD_INT 10
 408: PPUSH
 409: CALL_OW 426
 413: ST_TO_ADDR
// def_difficulty_level := GetMultiplayerSetting ( 17 ) ;
 414: LD_ADDR_EXP 37
 418: PUSH
 419: LD_INT 17
 421: PPUSH
 422: CALL_OW 426
 426: ST_TO_ADDR
// end else
 427: GO 465
// begin Randomize ;
 429: CALL_OW 10
// def_amount_of_people = 3 ;
 433: LD_ADDR_EXP 2
 437: PUSH
 438: LD_INT 3
 440: ST_TO_ADDR
// def_difficulty_level = 0 ;
 441: LD_ADDR_EXP 37
 445: PUSH
 446: LD_INT 0
 448: ST_TO_ADDR
// def_skill_level = 3 ;
 449: LD_ADDR_EXP 3
 453: PUSH
 454: LD_INT 3
 456: ST_TO_ADDR
// def_shared_vision = 1 ;
 457: LD_ADDR_EXP 6
 461: PUSH
 462: LD_INT 1
 464: ST_TO_ADDR
// end ; number_of_people := [ 3 , 5 , 7 , 10 ] [ def_amount_of_people + 1 ] ;
 465: LD_ADDR_EXP 11
 469: PUSH
 470: LD_INT 3
 472: PUSH
 473: LD_INT 5
 475: PUSH
 476: LD_INT 7
 478: PUSH
 479: LD_INT 10
 481: PUSH
 482: EMPTY
 483: LIST
 484: LIST
 485: LIST
 486: LIST
 487: PUSH
 488: LD_EXP 2
 492: PUSH
 493: LD_INT 1
 495: PLUS
 496: ARRAY
 497: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 498: LD_ADDR_EXP 12
 502: PUSH
 503: LD_INT 3
 505: PUSH
 506: LD_INT 5
 508: PUSH
 509: LD_INT 6
 511: PUSH
 512: LD_INT 7
 514: PUSH
 515: EMPTY
 516: LIST
 517: LIST
 518: LIST
 519: LIST
 520: PUSH
 521: LD_EXP 3
 525: PUSH
 526: LD_INT 1
 528: PLUS
 529: ARRAY
 530: ST_TO_ADDR
// difficulty_level := [ 5 , 7 , 8 , 10 ] [ def_difficulty_level + 1 ] ;
 531: LD_ADDR_EXP 38
 535: PUSH
 536: LD_INT 5
 538: PUSH
 539: LD_INT 7
 541: PUSH
 542: LD_INT 8
 544: PUSH
 545: LD_INT 10
 547: PUSH
 548: EMPTY
 549: LIST
 550: LIST
 551: LIST
 552: LIST
 553: PUSH
 554: LD_EXP 37
 558: PUSH
 559: LD_INT 1
 561: PLUS
 562: ARRAY
 563: ST_TO_ADDR
// end ;
 564: LD_VAR 0 1
 568: RET
// function init_map ; var i , j ; begin
 569: LD_INT 0
 571: PPUSH
 572: PPUSH
 573: PPUSH
// depot_def := [ [ 19 , 32 , 1 ] , [ 21 , 37 , 1 ] , [ 25 , 44 , 1 ] , [ 28 , 50 , 1 ] ] ;
 574: LD_ADDR_EXP 29
 578: PUSH
 579: LD_INT 19
 581: PUSH
 582: LD_INT 32
 584: PUSH
 585: LD_INT 1
 587: PUSH
 588: EMPTY
 589: LIST
 590: LIST
 591: LIST
 592: PUSH
 593: LD_INT 21
 595: PUSH
 596: LD_INT 37
 598: PUSH
 599: LD_INT 1
 601: PUSH
 602: EMPTY
 603: LIST
 604: LIST
 605: LIST
 606: PUSH
 607: LD_INT 25
 609: PUSH
 610: LD_INT 44
 612: PUSH
 613: LD_INT 1
 615: PUSH
 616: EMPTY
 617: LIST
 618: LIST
 619: LIST
 620: PUSH
 621: LD_INT 28
 623: PUSH
 624: LD_INT 50
 626: PUSH
 627: LD_INT 1
 629: PUSH
 630: EMPTY
 631: LIST
 632: LIST
 633: LIST
 634: PUSH
 635: EMPTY
 636: LIST
 637: LIST
 638: LIST
 639: LIST
 640: ST_TO_ADDR
// for i in depot_def do
 641: LD_ADDR_VAR 0 2
 645: PUSH
 646: LD_EXP 29
 650: PUSH
 651: FOR_IN
 652: IFFALSE 726
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 5 ) ] ] ;
 654: LD_ADDR_EXP 31
 658: PUSH
 659: LD_EXP 31
 663: PUSH
 664: LD_VAR 0 2
 668: PUSH
 669: LD_INT 1
 671: ARRAY
 672: PPUSH
 673: LD_VAR 0 2
 677: PUSH
 678: LD_INT 3
 680: ARRAY
 681: PPUSH
 682: LD_INT 10
 684: PPUSH
 685: CALL_OW 272
 689: PUSH
 690: LD_VAR 0 2
 694: PUSH
 695: LD_INT 2
 697: ARRAY
 698: PPUSH
 699: LD_VAR 0 2
 703: PUSH
 704: LD_INT 3
 706: ARRAY
 707: PPUSH
 708: LD_INT 5
 710: PPUSH
 711: CALL_OW 273
 715: PUSH
 716: EMPTY
 717: LIST
 718: LIST
 719: PUSH
 720: EMPTY
 721: LIST
 722: ADD
 723: ST_TO_ADDR
 724: GO 651
 726: POP
 727: POP
// end ;
 728: LD_VAR 0 1
 732: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
 733: LD_INT 0
 735: PPUSH
 736: PPUSH
 737: PPUSH
// if def_shared_vision then
 738: LD_EXP 6
 742: IFFALSE 786
// begin ChangeSideFog ( sideP2 , sideP1 ) ;
 744: LD_EXP 45
 748: PPUSH
 749: LD_EXP 44
 753: PPUSH
 754: CALL_OW 343
// ChangeSideFog ( sideP3 , sideP1 ) ;
 758: LD_EXP 46
 762: PPUSH
 763: LD_EXP 44
 767: PPUSH
 768: CALL_OW 343
// ChangeSideFog ( sideP4 , sideP1 ) ;
 772: LD_EXP 47
 776: PPUSH
 777: LD_EXP 44
 781: PPUSH
 782: CALL_OW 343
// end ; end ;
 786: LD_VAR 0 1
 790: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
 791: LD_INT 0
 793: PPUSH
 794: PPUSH
 795: PPUSH
 796: PPUSH
// result := [ ] ;
 797: LD_ADDR_VAR 0 6
 801: PUSH
 802: EMPTY
 803: ST_TO_ADDR
// for i := 1 to count do
 804: LD_ADDR_VAR 0 7
 808: PUSH
 809: DOUBLE
 810: LD_INT 1
 812: DEC
 813: ST_TO_ADDR
 814: LD_VAR 0 1
 818: PUSH
 819: FOR_TO
 820: IFFALSE 1216
// begin uc_direction := Rand ( 0 , 5 ) ;
 822: LD_ADDR_OWVAR 24
 826: PUSH
 827: LD_INT 0
 829: PPUSH
 830: LD_INT 5
 832: PPUSH
 833: CALL_OW 12
 837: ST_TO_ADDR
// if commander then
 838: LD_LOC 1
 842: IFFALSE 951
// begin hc_name := mp_sides_players_names [ uc_side ] ;
 844: LD_ADDR_OWVAR 26
 848: PUSH
 849: LD_OWVAR 19
 853: PUSH
 854: LD_OWVAR 20
 858: ARRAY
 859: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
 860: LD_INT 1
 862: PPUSH
 863: LD_INT 2
 865: PPUSH
 866: CALL_OW 12
 870: PPUSH
 871: LD_VAR 0 2
 875: PPUSH
 876: LD_EXP 12
 880: PUSH
 881: LD_INT 2
 883: PLUS
 884: PPUSH
 885: CALL_OW 380
// hc_importance := 105 ;
 889: LD_ADDR_OWVAR 32
 893: PUSH
 894: LD_INT 105
 896: ST_TO_ADDR
// commander := false ;
 897: LD_ADDR_LOC 1
 901: PUSH
 902: LD_INT 0
 904: ST_TO_ADDR
// if Multiplayer then
 905: LD_OWVAR 4
 909: IFFALSE 949
// begin hc_gallery := MULTIAVATARS ;
 911: LD_ADDR_OWVAR 33
 915: PUSH
 916: LD_STRING MULTIAVATARS
 918: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
 919: LD_ADDR_OWVAR 34
 923: PUSH
 924: LD_OWVAR 20
 928: PPUSH
 929: CALL_OW 525
 933: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
 934: LD_ADDR_OWVAR 27
 938: PUSH
 939: LD_OWVAR 20
 943: PPUSH
 944: CALL_OW 526
 948: ST_TO_ADDR
// end ; end else
 949: GO 1014
// begin hc_name :=  ;
 951: LD_ADDR_OWVAR 26
 955: PUSH
 956: LD_STRING 
 958: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
 959: LD_INT 1
 961: PPUSH
 962: LD_INT 2
 964: PPUSH
 965: CALL_OW 12
 969: PPUSH
 970: LD_VAR 0 2
 974: PPUSH
 975: LD_EXP 12
 979: PPUSH
 980: CALL_OW 380
// hc_importance := 0 ;
 984: LD_ADDR_OWVAR 32
 988: PUSH
 989: LD_INT 0
 991: ST_TO_ADDR
// if Multiplayer then
 992: LD_OWVAR 4
 996: IFFALSE 1014
// begin hc_gallery :=  ;
 998: LD_ADDR_OWVAR 33
1002: PUSH
1003: LD_STRING 
1005: ST_TO_ADDR
// hc_face_number := 0 ;
1006: LD_ADDR_OWVAR 34
1010: PUSH
1011: LD_INT 0
1013: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
1014: LD_ADDR_VAR 0 9
1018: PUSH
1019: CALL_OW 44
1023: ST_TO_ADDR
// if global_defined then
1024: LD_LOC 3
1028: IFFALSE 1168
// begin if ( cl = class_soldier ) then
1030: LD_VAR 0 2
1034: PUSH
1035: LD_INT 1
1037: EQUAL
1038: IFFALSE 1058
// j := i + soldiers_created else
1040: LD_ADDR_VAR 0 8
1044: PUSH
1045: LD_VAR 0 7
1049: PUSH
1050: LD_LOC 4
1054: PLUS
1055: ST_TO_ADDR
1056: GO 1068
// j := i ;
1058: LD_ADDR_VAR 0 8
1062: PUSH
1063: LD_VAR 0 7
1067: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
1068: LD_LOC 2
1072: PUSH
1073: LD_VAR 0 2
1077: ARRAY
1078: PUSH
1079: LD_VAR 0 8
1083: ARRAY
1084: PPUSH
1085: LD_VAR 0 9
1089: PPUSH
1090: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
1094: LD_VAR 0 9
1098: PPUSH
1099: LD_INT 2
1101: PPUSH
1102: LD_LOC 2
1106: PUSH
1107: LD_VAR 0 2
1111: ARRAY
1112: PUSH
1113: LD_VAR 0 8
1117: ARRAY
1118: PPUSH
1119: LD_INT 2
1121: PPUSH
1122: CALL_OW 260
1126: PPUSH
1127: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
1131: LD_VAR 0 9
1135: PPUSH
1136: LD_INT 1
1138: PPUSH
1139: LD_LOC 2
1143: PUSH
1144: LD_VAR 0 2
1148: ARRAY
1149: PUSH
1150: LD_VAR 0 8
1154: ARRAY
1155: PPUSH
1156: LD_INT 1
1158: PPUSH
1159: CALL_OW 260
1163: PPUSH
1164: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
1168: LD_VAR 0 9
1172: PPUSH
1173: LD_VAR 0 3
1177: PPUSH
1178: LD_VAR 0 4
1182: PPUSH
1183: LD_VAR 0 5
1187: PPUSH
1188: LD_INT 0
1190: PPUSH
1191: CALL_OW 50
// result := result ^ [ un ] ;
1195: LD_ADDR_VAR 0 6
1199: PUSH
1200: LD_VAR 0 6
1204: PUSH
1205: LD_VAR 0 9
1209: PUSH
1210: EMPTY
1211: LIST
1212: ADD
1213: ST_TO_ADDR
// end ;
1214: GO 819
1216: POP
1217: POP
// if not global_defined then
1218: LD_LOC 3
1222: NOT
1223: IFFALSE 1301
// if ( global_units >= cl ) then
1225: LD_LOC 2
1229: PUSH
1230: LD_VAR 0 2
1234: GREATEREQUAL
1235: IFFALSE 1276
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
1237: LD_ADDR_LOC 2
1241: PUSH
1242: LD_LOC 2
1246: PPUSH
1247: LD_VAR 0 2
1251: PPUSH
1252: LD_LOC 2
1256: PUSH
1257: LD_VAR 0 2
1261: ARRAY
1262: PUSH
1263: LD_VAR 0 6
1267: ADD
1268: PPUSH
1269: CALL_OW 1
1273: ST_TO_ADDR
1274: GO 1301
// global_units := Replace ( global_units , cl , result ) ;
1276: LD_ADDR_LOC 2
1280: PUSH
1281: LD_LOC 2
1285: PPUSH
1286: LD_VAR 0 2
1290: PPUSH
1291: LD_VAR 0 6
1295: PPUSH
1296: CALL_OW 1
1300: ST_TO_ADDR
// end ;
1301: LD_VAR 0 6
1305: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
1306: LD_INT 0
1308: PPUSH
1309: PPUSH
1310: PPUSH
1311: PPUSH
1312: PPUSH
1313: PPUSH
1314: PPUSH
1315: PPUSH
1316: PPUSH
1317: PPUSH
// pos := Side_Positions [ side ] ;
1318: LD_ADDR_VAR 0 3
1322: PUSH
1323: LD_EXP 25
1327: PUSH
1328: LD_VAR 0 1
1332: ARRAY
1333: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
1334: LD_ADDR_OWVAR 21
1338: PUSH
1339: LD_EXP 26
1343: PUSH
1344: LD_VAR 0 1
1348: ARRAY
1349: ST_TO_ADDR
// uc_side := side ;
1350: LD_ADDR_OWVAR 20
1354: PUSH
1355: LD_VAR 0 1
1359: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
1360: LD_ADDR_VAR 0 4
1364: PUSH
1365: LD_EXP 29
1369: PUSH
1370: LD_VAR 0 3
1374: ARRAY
1375: PUSH
1376: LD_INT 1
1378: ARRAY
1379: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
1380: LD_ADDR_VAR 0 5
1384: PUSH
1385: LD_EXP 29
1389: PUSH
1390: LD_VAR 0 3
1394: ARRAY
1395: PUSH
1396: LD_INT 2
1398: ARRAY
1399: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
1400: LD_ADDR_VAR 0 6
1404: PUSH
1405: LD_EXP 29
1409: PUSH
1410: LD_VAR 0 3
1414: ARRAY
1415: PUSH
1416: LD_INT 3
1418: ARRAY
1419: ST_TO_ADDR
// commander := true ;
1420: LD_ADDR_LOC 1
1424: PUSH
1425: LD_INT 1
1427: ST_TO_ADDR
// soldiers_created := 0 ;
1428: LD_ADDR_LOC 4
1432: PUSH
1433: LD_INT 0
1435: ST_TO_ADDR
// x := start_def [ pos ] [ 1 ] ;
1436: LD_ADDR_VAR 0 4
1440: PUSH
1441: LD_EXP 31
1445: PUSH
1446: LD_VAR 0 3
1450: ARRAY
1451: PUSH
1452: LD_INT 1
1454: ARRAY
1455: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
1456: LD_ADDR_VAR 0 5
1460: PUSH
1461: LD_EXP 31
1465: PUSH
1466: LD_VAR 0 3
1470: ARRAY
1471: PUSH
1472: LD_INT 2
1474: ARRAY
1475: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
1476: LD_LOC 8
1480: PUSH
1481: LD_EXP 10
1485: MINUS
1486: PPUSH
1487: LD_INT 1
1489: PPUSH
1490: LD_VAR 0 4
1494: PPUSH
1495: LD_VAR 0 5
1499: PPUSH
1500: LD_INT 5
1502: PPUSH
1503: CALL 791 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
1507: LD_LOC 7
1511: PPUSH
1512: LD_INT 3
1514: PPUSH
1515: LD_VAR 0 4
1519: PPUSH
1520: LD_VAR 0 5
1524: PPUSH
1525: LD_INT 5
1527: PPUSH
1528: CALL 791 0 5
// prepare_people ( 2 , 9 , x , y , 5 ) ;
1532: LD_INT 2
1534: PPUSH
1535: LD_INT 9
1537: PPUSH
1538: LD_VAR 0 4
1542: PPUSH
1543: LD_VAR 0 5
1547: PPUSH
1548: LD_INT 5
1550: PPUSH
1551: CALL 791 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
1555: LD_LOC 6
1559: PPUSH
1560: LD_INT 4
1562: PPUSH
1563: LD_VAR 0 4
1567: PPUSH
1568: LD_VAR 0 5
1572: PPUSH
1573: LD_INT 5
1575: PPUSH
1576: CALL 791 0 5
// SetTech ( tech_artifact , side , state_disabled ) ;
1580: LD_INT 24
1582: PPUSH
1583: LD_VAR 0 1
1587: PPUSH
1588: LD_INT 0
1590: PPUSH
1591: CALL_OW 322
// SetTech ( tech_SibFiss , side , state_disabled ) ;
1595: LD_INT 25
1597: PPUSH
1598: LD_VAR 0 1
1602: PPUSH
1603: LD_INT 0
1605: PPUSH
1606: CALL_OW 322
// global_defined := true ;
1610: LD_ADDR_LOC 3
1614: PUSH
1615: LD_INT 1
1617: ST_TO_ADDR
// end ;
1618: LD_VAR 0 2
1622: RET
// function prepare_sides ; var i ; begin
1623: LD_INT 0
1625: PPUSH
1626: PPUSH
// global_units := [ ] ;
1627: LD_ADDR_LOC 2
1631: PUSH
1632: EMPTY
1633: ST_TO_ADDR
// global_defined := false ;
1634: LD_ADDR_LOC 3
1638: PUSH
1639: LD_INT 0
1641: ST_TO_ADDR
// CountClassMembers ;
1642: CALL 1692 0 0
// for i := 1 to 8 do
1646: LD_ADDR_VAR 0 2
1650: PUSH
1651: DOUBLE
1652: LD_INT 1
1654: DEC
1655: ST_TO_ADDR
1656: LD_INT 8
1658: PUSH
1659: FOR_TO
1660: IFFALSE 1685
// if Side_Positions [ i ] then
1662: LD_EXP 25
1666: PUSH
1667: LD_VAR 0 2
1671: ARRAY
1672: IFFALSE 1683
// prepare_side ( i ) ;
1674: LD_VAR 0 2
1678: PPUSH
1679: CALL 1306 0 1
1683: GO 1659
1685: POP
1686: POP
// end ;
1687: LD_VAR 0 1
1691: RET
// function CountClassMembers ; var Mode ; begin
1692: LD_INT 0
1694: PPUSH
1695: PPUSH
// neng := number_of_people ;
1696: LD_ADDR_LOC 5
1700: PUSH
1701: LD_EXP 11
1705: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
1706: LD_ADDR_LOC 8
1710: PUSH
1711: LD_LOC 5
1715: PUSH
1716: LD_INT 4
1718: PUSH
1719: LD_INT 3
1721: PUSH
1722: EMPTY
1723: LIST
1724: LIST
1725: PUSH
1726: LD_VAR 0 2
1730: ARRAY
1731: DIV
1732: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
1733: LD_LOC 8
1737: PUSH
1738: LD_EXP 10
1742: LESS
1743: IFFALSE 1755
// nsol := number_of_breastworks ;
1745: LD_ADDR_LOC 8
1749: PUSH
1750: LD_EXP 10
1754: ST_TO_ADDR
// neng := neng - nsol ;
1755: LD_ADDR_LOC 5
1759: PUSH
1760: LD_LOC 5
1764: PUSH
1765: LD_LOC 8
1769: MINUS
1770: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
1771: LD_ADDR_LOC 6
1775: PUSH
1776: LD_LOC 5
1780: PUSH
1781: LD_INT 3
1783: PUSH
1784: LD_INT 2
1786: PUSH
1787: EMPTY
1788: LIST
1789: LIST
1790: PUSH
1791: LD_VAR 0 2
1795: ARRAY
1796: DIV
1797: ST_TO_ADDR
// if ( nsci < 1 ) then
1798: LD_LOC 6
1802: PUSH
1803: LD_INT 1
1805: LESS
1806: IFFALSE 1816
// nsci := 1 ;
1808: LD_ADDR_LOC 6
1812: PUSH
1813: LD_INT 1
1815: ST_TO_ADDR
// neng := neng - nsci ;
1816: LD_ADDR_LOC 5
1820: PUSH
1821: LD_LOC 5
1825: PUSH
1826: LD_LOC 6
1830: MINUS
1831: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
1832: LD_ADDR_LOC 7
1836: PUSH
1837: LD_LOC 5
1841: PUSH
1842: LD_INT 2
1844: DIV
1845: PUSH
1846: LD_INT 0
1848: PUSH
1849: EMPTY
1850: LIST
1851: LIST
1852: PUSH
1853: LD_VAR 0 2
1857: ARRAY
1858: ST_TO_ADDR
// neng := neng - nmech ;
1859: LD_ADDR_LOC 5
1863: PUSH
1864: LD_LOC 5
1868: PUSH
1869: LD_LOC 7
1873: MINUS
1874: ST_TO_ADDR
// if ( neng < 1 ) then
1875: LD_LOC 5
1879: PUSH
1880: LD_INT 1
1882: LESS
1883: IFFALSE 1893
// neng := 1 ;
1885: LD_ADDR_LOC 5
1889: PUSH
1890: LD_INT 1
1892: ST_TO_ADDR
// end ;
1893: LD_VAR 0 1
1897: RET
// export initEnd ; starting var i , d ; begin ResetFog ;
1898: CALL_OW 335
// read_multiplayer_and_game_parameters ;
1902: CALL 0 0 0
// ardestroyedBuildings = [ ] ;
1906: LD_ADDR_EXP 39
1910: PUSH
1911: EMPTY
1912: ST_TO_ADDR
// randomedColors = [ ] ;
1913: LD_ADDR_EXP 43
1917: PUSH
1918: EMPTY
1919: ST_TO_ADDR
// arabianMines = [ ] ;
1920: LD_ADDR_EXP 42
1924: PUSH
1925: EMPTY
1926: ST_TO_ADDR
// MultiplayerColorCheck ;
1927: CALL 3798 0 0
// ChangeAISide ( 2 , randomedColors [ 1 ] ) ;
1931: LD_INT 2
1933: PPUSH
1934: LD_EXP 43
1938: PUSH
1939: LD_INT 1
1941: ARRAY
1942: PPUSH
1943: CALL 2734 0 2
// enable_human_prediction := true ;
1947: LD_ADDR_OWVAR 51
1951: PUSH
1952: LD_INT 1
1954: ST_TO_ADDR
// mp_selectmsg := true ;
1955: LD_ADDR_OWVAR 13
1959: PUSH
1960: LD_INT 1
1962: ST_TO_ADDR
// AIDepotDest = 0 ;
1963: LD_ADDR_EXP 40
1967: PUSH
1968: LD_INT 0
1970: ST_TO_ADDR
// InitHC_ALL ;
1971: CALL_OW 584
// init_map ;
1975: CALL 569 0 0
// init_respawning ;
1979: CALL 10654 0 0
// prepare_sides ;
1983: CALL 1623 0 0
// ResetFog ;
1987: CALL_OW 335
// set_shared_visions_and_alliances ;
1991: CALL 733 0 0
// SetAttitude ( sideP1 , sideP2 , att_friend , true ) ;
1995: LD_EXP 44
1999: PPUSH
2000: LD_EXP 45
2004: PPUSH
2005: LD_INT 1
2007: PPUSH
2008: LD_INT 1
2010: PPUSH
2011: CALL_OW 80
// SetAttitude ( sideP1 , sideP2 , att_friend , true ) ;
2015: LD_EXP 44
2019: PPUSH
2020: LD_EXP 45
2024: PPUSH
2025: LD_INT 1
2027: PPUSH
2028: LD_INT 1
2030: PPUSH
2031: CALL_OW 80
// SetAttitude ( sideP1 , sideP3 , att_friend , true ) ;
2035: LD_EXP 44
2039: PPUSH
2040: LD_EXP 46
2044: PPUSH
2045: LD_INT 1
2047: PPUSH
2048: LD_INT 1
2050: PPUSH
2051: CALL_OW 80
// SetAttitude ( sideP1 , sideP4 , att_friend , true ) ;
2055: LD_EXP 44
2059: PPUSH
2060: LD_EXP 47
2064: PPUSH
2065: LD_INT 1
2067: PPUSH
2068: LD_INT 1
2070: PPUSH
2071: CALL_OW 80
// SetAttitude ( sideP2 , sideP3 , att_friend , true ) ;
2075: LD_EXP 45
2079: PPUSH
2080: LD_EXP 46
2084: PPUSH
2085: LD_INT 1
2087: PPUSH
2088: LD_INT 1
2090: PPUSH
2091: CALL_OW 80
// SetAttitude ( sideP2 , sideP4 , att_friend , true ) ;
2095: LD_EXP 45
2099: PPUSH
2100: LD_EXP 47
2104: PPUSH
2105: LD_INT 1
2107: PPUSH
2108: LD_INT 1
2110: PPUSH
2111: CALL_OW 80
// SetAttitude ( sideP3 , sideP4 , att_friend , true ) ;
2115: LD_EXP 46
2119: PPUSH
2120: LD_EXP 47
2124: PPUSH
2125: LD_INT 1
2127: PPUSH
2128: LD_INT 1
2130: PPUSH
2131: CALL_OW 80
// if FilterAllUnits ( [ f_side , sideP1 ] ) > 0 then
2135: LD_INT 22
2137: PUSH
2138: LD_EXP 44
2142: PUSH
2143: EMPTY
2144: LIST
2145: LIST
2146: PPUSH
2147: CALL_OW 69
2151: PUSH
2152: LD_INT 0
2154: GREATER
2155: IFFALSE 2211
// begin SpawnGenerals ( sideP1 , 3 , ru , 3 , Belkov , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2157: LD_EXP 44
2161: PPUSH
2162: LD_INT 3
2164: PPUSH
2165: LD_STRING ru
2167: PPUSH
2168: LD_INT 3
2170: PPUSH
2171: LD_STRING Belkov
2173: PPUSH
2174: LD_INT 1
2176: PPUSH
2177: LD_INT 1
2179: PPUSH
2180: LD_INT 10
2182: PUSH
2183: LD_INT 8
2185: PUSH
2186: LD_INT 6
2188: PUSH
2189: LD_INT 4
2191: PUSH
2192: EMPTY
2193: LIST
2194: LIST
2195: LIST
2196: LIST
2197: PPUSH
2198: CALL 2538 0 8
// PrepareTanks ( sideP1 ) ;
2202: LD_EXP 44
2206: PPUSH
2207: CALL 4063 0 1
// end ; if FilterAllUnits ( [ f_side , sideP2 ] ) > 0 then
2211: LD_INT 22
2213: PUSH
2214: LD_EXP 45
2218: PUSH
2219: EMPTY
2220: LIST
2221: LIST
2222: PPUSH
2223: CALL_OW 69
2227: PUSH
2228: LD_INT 0
2230: GREATER
2231: IFFALSE 2287
// begin SpawnGenerals ( sideP2 , 3 , ru , 5 , Gnyevko , sex_male , 3 , [ 4 , 8 , 10 , 6 ] ) ;
2233: LD_EXP 45
2237: PPUSH
2238: LD_INT 3
2240: PPUSH
2241: LD_STRING ru
2243: PPUSH
2244: LD_INT 5
2246: PPUSH
2247: LD_STRING Gnyevko
2249: PPUSH
2250: LD_INT 1
2252: PPUSH
2253: LD_INT 3
2255: PPUSH
2256: LD_INT 4
2258: PUSH
2259: LD_INT 8
2261: PUSH
2262: LD_INT 10
2264: PUSH
2265: LD_INT 6
2267: PUSH
2268: EMPTY
2269: LIST
2270: LIST
2271: LIST
2272: LIST
2273: PPUSH
2274: CALL 2538 0 8
// PrepareTanks ( sideP2 ) ;
2278: LD_EXP 45
2282: PPUSH
2283: CALL 4063 0 1
// end ; if FilterAllUnits ( [ f_side , sideP3 ] ) > 0 then
2287: LD_INT 22
2289: PUSH
2290: LD_EXP 46
2294: PUSH
2295: EMPTY
2296: LIST
2297: LIST
2298: PPUSH
2299: CALL_OW 69
2303: PUSH
2304: LD_INT 0
2306: GREATER
2307: IFFALSE 2363
// begin SpawnGenerals ( sideP3 , 3 , ru , 1 , Burlak , sex_male , 3 , [ 4 , 8 , 10 , 6 ] ) ;
2309: LD_EXP 46
2313: PPUSH
2314: LD_INT 3
2316: PPUSH
2317: LD_STRING ru
2319: PPUSH
2320: LD_INT 1
2322: PPUSH
2323: LD_STRING Burlak
2325: PPUSH
2326: LD_INT 1
2328: PPUSH
2329: LD_INT 3
2331: PPUSH
2332: LD_INT 4
2334: PUSH
2335: LD_INT 8
2337: PUSH
2338: LD_INT 10
2340: PUSH
2341: LD_INT 6
2343: PUSH
2344: EMPTY
2345: LIST
2346: LIST
2347: LIST
2348: LIST
2349: PPUSH
2350: CALL 2538 0 8
// PrepareTanks ( sideP3 ) ;
2354: LD_EXP 46
2358: PPUSH
2359: CALL 4063 0 1
// end ; if FilterAllUnits ( [ f_side , sideP4 ] ) > 0 then
2363: LD_INT 22
2365: PUSH
2366: LD_EXP 47
2370: PUSH
2371: EMPTY
2372: LIST
2373: LIST
2374: PPUSH
2375: CALL_OW 69
2379: PUSH
2380: LD_INT 0
2382: GREATER
2383: IFFALSE 2439
// begin SpawnGenerals ( sideP4 , 3 , ru , 21 , Gladkov , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2385: LD_EXP 47
2389: PPUSH
2390: LD_INT 3
2392: PPUSH
2393: LD_STRING ru
2395: PPUSH
2396: LD_INT 21
2398: PPUSH
2399: LD_STRING Gladkov
2401: PPUSH
2402: LD_INT 1
2404: PPUSH
2405: LD_INT 1
2407: PPUSH
2408: LD_INT 10
2410: PUSH
2411: LD_INT 8
2413: PUSH
2414: LD_INT 6
2416: PUSH
2417: LD_INT 4
2419: PUSH
2420: EMPTY
2421: LIST
2422: LIST
2423: LIST
2424: LIST
2425: PPUSH
2426: CALL 2538 0 8
// PrepareTanks ( sideP4 ) ;
2430: LD_EXP 47
2434: PPUSH
2435: CALL 4063 0 1
// end ; music_nat := Side_Nations [ your_side ] ;
2439: LD_ADDR_OWVAR 71
2443: PUSH
2444: LD_EXP 26
2448: PUSH
2449: LD_OWVAR 2
2453: ARRAY
2454: ST_TO_ADDR
// if IAmSpec then
2455: CALL_OW 531
2459: IFFALSE 2483
// begin FogOff ( true ) ;
2461: LD_INT 1
2463: PPUSH
2464: CALL_OW 344
// CenterNowOnXY ( 104 , 69 ) ;
2468: LD_INT 104
2470: PPUSH
2471: LD_INT 69
2473: PPUSH
2474: CALL_OW 86
// enable ( 400 ) ;
2478: LD_INT 400
2480: ENABLE_MARKED
// end else
2481: GO 2529
// begin CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
2483: LD_EXP 31
2487: PUSH
2488: LD_EXP 25
2492: PUSH
2493: LD_OWVAR 2
2497: ARRAY
2498: ARRAY
2499: PUSH
2500: LD_INT 1
2502: ARRAY
2503: PPUSH
2504: LD_EXP 31
2508: PUSH
2509: LD_EXP 25
2513: PUSH
2514: LD_OWVAR 2
2518: ARRAY
2519: ARRAY
2520: PUSH
2521: LD_INT 2
2523: ARRAY
2524: PPUSH
2525: CALL_OW 86
// end ; initEnd = true ;
2529: LD_ADDR_EXP 52
2533: PUSH
2534: LD_INT 1
2536: ST_TO_ADDR
// end ; end_of_file
2537: END
// export function SpawnGenerals ( side , nation , gallery , numberGal , name , sex , class , skillTab ) ; var x , y , un ; begin
2538: LD_INT 0
2540: PPUSH
2541: PPUSH
2542: PPUSH
2543: PPUSH
// uc_side = side ;
2544: LD_ADDR_OWVAR 20
2548: PUSH
2549: LD_VAR 0 1
2553: ST_TO_ADDR
// uc_nation = nation ;
2554: LD_ADDR_OWVAR 21
2558: PUSH
2559: LD_VAR 0 2
2563: ST_TO_ADDR
// hc_gallery = gallery ;
2564: LD_ADDR_OWVAR 33
2568: PUSH
2569: LD_VAR 0 3
2573: ST_TO_ADDR
// hc_face_number = numberGal ;
2574: LD_ADDR_OWVAR 34
2578: PUSH
2579: LD_VAR 0 4
2583: ST_TO_ADDR
// hc_name = name ;
2584: LD_ADDR_OWVAR 26
2588: PUSH
2589: LD_VAR 0 5
2593: ST_TO_ADDR
// hc_sex = sex ;
2594: LD_ADDR_OWVAR 27
2598: PUSH
2599: LD_VAR 0 6
2603: ST_TO_ADDR
// hc_class = class ;
2604: LD_ADDR_OWVAR 28
2608: PUSH
2609: LD_VAR 0 7
2613: ST_TO_ADDR
// hc_skills = skillTab ;
2614: LD_ADDR_OWVAR 31
2618: PUSH
2619: LD_VAR 0 8
2623: ST_TO_ADDR
// hc_importance = 100 ;
2624: LD_ADDR_OWVAR 32
2628: PUSH
2629: LD_INT 100
2631: ST_TO_ADDR
// un = CreateHuman ;
2632: LD_ADDR_VAR 0 12
2636: PUSH
2637: CALL_OW 44
2641: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
2642: LD_ADDR_VAR 0 10
2646: PUSH
2647: LD_INT 22
2649: PUSH
2650: LD_VAR 0 1
2654: PUSH
2655: EMPTY
2656: LIST
2657: LIST
2658: PPUSH
2659: CALL_OW 69
2663: PUSH
2664: LD_INT 1
2666: ARRAY
2667: PPUSH
2668: CALL_OW 250
2672: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
2673: LD_ADDR_VAR 0 11
2677: PUSH
2678: LD_INT 22
2680: PUSH
2681: LD_VAR 0 1
2685: PUSH
2686: EMPTY
2687: LIST
2688: LIST
2689: PPUSH
2690: CALL_OW 69
2694: PUSH
2695: LD_INT 1
2697: ARRAY
2698: PPUSH
2699: CALL_OW 251
2703: ST_TO_ADDR
// PlaceUnitXYR ( un , x , y , 5 , false ) ;
2704: LD_VAR 0 12
2708: PPUSH
2709: LD_VAR 0 10
2713: PPUSH
2714: LD_VAR 0 11
2718: PPUSH
2719: LD_INT 5
2721: PPUSH
2722: LD_INT 0
2724: PPUSH
2725: CALL_OW 50
// end ;
2729: LD_VAR 0 9
2733: RET
// export function ChangeAISide ( originalSide , newSide ) ; var i ; begin
2734: LD_INT 0
2736: PPUSH
2737: PPUSH
// SetSide ( FilterAllUnits ( [ f_side , originalSide ] ) , newSide ) ;
2738: LD_INT 22
2740: PUSH
2741: LD_VAR 0 1
2745: PUSH
2746: EMPTY
2747: LIST
2748: LIST
2749: PPUSH
2750: CALL_OW 69
2754: PPUSH
2755: LD_VAR 0 2
2759: PPUSH
2760: CALL_OW 235
// wait ( 0 0$2 ) ;
2764: LD_INT 70
2766: PPUSH
2767: CALL_OW 67
// for i in FilterAllUnits ( [ [ f_side , newSide ] , [ f_type , unit_building ] ] ) do
2771: LD_ADDR_VAR 0 4
2775: PUSH
2776: LD_INT 22
2778: PUSH
2779: LD_VAR 0 2
2783: PUSH
2784: EMPTY
2785: LIST
2786: LIST
2787: PUSH
2788: LD_INT 21
2790: PUSH
2791: LD_INT 3
2793: PUSH
2794: EMPTY
2795: LIST
2796: LIST
2797: PUSH
2798: EMPTY
2799: LIST
2800: LIST
2801: PPUSH
2802: CALL_OW 69
2806: PUSH
2807: FOR_IN
2808: IFFALSE 2824
// SetBLevel ( i , 10 ) ;
2810: LD_VAR 0 4
2814: PPUSH
2815: LD_INT 10
2817: PPUSH
2818: CALL_OW 241
2822: GO 2807
2824: POP
2825: POP
// PrepareArabianBase ;
2826: CALL 2843 0 0
// PrepareGossudarov ;
2830: CALL 3663 0 0
// PrepareDifficulty ;
2834: CALL 4457 0 0
// end ;
2838: LD_VAR 0 3
2842: RET
// export function PrepareArabianBase ; var i ; begin
2843: LD_INT 0
2845: PPUSH
2846: PPUSH
// Randomize ;
2847: CALL_OW 10
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] , [ f_bweapon , 22 ] ] ) do
2851: LD_ADDR_VAR 0 2
2855: PUSH
2856: LD_INT 22
2858: PUSH
2859: LD_EXP 43
2863: PUSH
2864: LD_INT 1
2866: ARRAY
2867: PUSH
2868: EMPTY
2869: LIST
2870: LIST
2871: PUSH
2872: LD_INT 30
2874: PUSH
2875: LD_INT 32
2877: PUSH
2878: EMPTY
2879: LIST
2880: LIST
2881: PUSH
2882: LD_INT 35
2884: PUSH
2885: LD_INT 22
2887: PUSH
2888: EMPTY
2889: LIST
2890: LIST
2891: PUSH
2892: EMPTY
2893: LIST
2894: LIST
2895: LIST
2896: PPUSH
2897: CALL_OW 69
2901: PUSH
2902: FOR_IN
2903: IFFALSE 2950
// PlaceWeaponTurret ( i , [ 27 , 28 , 26 , 25 , 25 ] [ Rand ( 1 , 5 ) ] ) ;
2905: LD_VAR 0 2
2909: PPUSH
2910: LD_INT 27
2912: PUSH
2913: LD_INT 28
2915: PUSH
2916: LD_INT 26
2918: PUSH
2919: LD_INT 25
2921: PUSH
2922: LD_INT 25
2924: PUSH
2925: EMPTY
2926: LIST
2927: LIST
2928: LIST
2929: LIST
2930: LIST
2931: PUSH
2932: LD_INT 1
2934: PPUSH
2935: LD_INT 5
2937: PPUSH
2938: CALL_OW 12
2942: ARRAY
2943: PPUSH
2944: CALL_OW 431
2948: GO 2902
2950: POP
2951: POP
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] ] ) do
2952: LD_ADDR_VAR 0 2
2956: PUSH
2957: LD_INT 22
2959: PUSH
2960: LD_EXP 43
2964: PUSH
2965: LD_INT 1
2967: ARRAY
2968: PUSH
2969: EMPTY
2970: LIST
2971: LIST
2972: PUSH
2973: LD_INT 30
2975: PUSH
2976: LD_INT 32
2978: PUSH
2979: EMPTY
2980: LIST
2981: LIST
2982: PUSH
2983: EMPTY
2984: LIST
2985: LIST
2986: PPUSH
2987: CALL_OW 69
2991: PUSH
2992: FOR_IN
2993: IFFALSE 3029
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , i , difficulty_level , 1 , 1 ) ;
2995: LD_EXP 43
2999: PUSH
3000: LD_INT 1
3002: ARRAY
3003: PPUSH
3004: LD_INT 2
3006: PPUSH
3007: LD_VAR 0 2
3011: PPUSH
3012: LD_EXP 38
3016: PPUSH
3017: LD_INT 1
3019: PPUSH
3020: LD_INT 1
3022: PPUSH
3023: CALL 4989 0 6
3027: GO 2992
3029: POP
3030: POP
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , 31 ] ] ) do
3031: LD_ADDR_VAR 0 2
3035: PUSH
3036: LD_INT 22
3038: PUSH
3039: LD_EXP 43
3043: PUSH
3044: LD_INT 1
3046: ARRAY
3047: PUSH
3048: EMPTY
3049: LIST
3050: LIST
3051: PUSH
3052: LD_INT 30
3054: PUSH
3055: LD_INT 31
3057: PUSH
3058: EMPTY
3059: LIST
3060: LIST
3061: PUSH
3062: EMPTY
3063: LIST
3064: LIST
3065: PPUSH
3066: CALL_OW 69
3070: PUSH
3071: FOR_IN
3072: IFFALSE 3090
// PrepareSolBun ( difficulty_level , i ) ;
3074: LD_EXP 38
3078: PPUSH
3079: LD_VAR 0 2
3083: PPUSH
3084: CALL 5162 0 2
3088: GO 3071
3090: POP
3091: POP
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , ardepot , difficulty_level , 2 , 5 ) ;
3092: LD_EXP 43
3096: PUSH
3097: LD_INT 1
3099: ARRAY
3100: PPUSH
3101: LD_INT 2
3103: PPUSH
3104: LD_INT 12
3106: PPUSH
3107: LD_EXP 38
3111: PPUSH
3112: LD_INT 2
3114: PPUSH
3115: LD_INT 5
3117: PPUSH
3118: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arfab , difficulty_level , 3 , 6 ) ;
3122: LD_EXP 43
3126: PUSH
3127: LD_INT 1
3129: ARRAY
3130: PPUSH
3131: LD_INT 2
3133: PPUSH
3134: LD_INT 10
3136: PPUSH
3137: LD_EXP 38
3141: PPUSH
3142: LD_INT 3
3144: PPUSH
3145: LD_INT 6
3147: PPUSH
3148: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arlab1 , difficulty_level , 4 , 3 ) ;
3152: LD_EXP 43
3156: PUSH
3157: LD_INT 1
3159: ARRAY
3160: PPUSH
3161: LD_INT 2
3163: PPUSH
3164: LD_INT 11
3166: PPUSH
3167: LD_EXP 38
3171: PPUSH
3172: LD_INT 4
3174: PPUSH
3175: LD_INT 3
3177: PPUSH
3178: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arlab2 , difficulty_level , 4 , 3 ) ;
3182: LD_EXP 43
3186: PUSH
3187: LD_INT 1
3189: ARRAY
3190: PPUSH
3191: LD_INT 2
3193: PPUSH
3194: LD_INT 121
3196: PPUSH
3197: LD_EXP 38
3201: PPUSH
3202: LD_INT 4
3204: PPUSH
3205: LD_INT 3
3207: PPUSH
3208: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arbar1 , difficulty_level , 8 , 3 ) ;
3212: LD_EXP 43
3216: PUSH
3217: LD_INT 1
3219: ARRAY
3220: PPUSH
3221: LD_INT 2
3223: PPUSH
3224: LD_INT 68
3226: PPUSH
3227: LD_EXP 38
3231: PPUSH
3232: LD_INT 8
3234: PPUSH
3235: LD_INT 3
3237: PPUSH
3238: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arbar2 , difficulty_level , 8 , 3 ) ;
3242: LD_EXP 43
3246: PUSH
3247: LD_INT 1
3249: ARRAY
3250: PPUSH
3251: LD_INT 2
3253: PPUSH
3254: LD_INT 1
3256: PPUSH
3257: LD_EXP 38
3261: PPUSH
3262: LD_INT 8
3264: PPUSH
3265: LD_INT 3
3267: PPUSH
3268: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arcontrol1 , difficulty_level , 3 , 1 ) ;
3272: LD_EXP 43
3276: PUSH
3277: LD_INT 1
3279: ARRAY
3280: PPUSH
3281: LD_INT 2
3283: PPUSH
3284: LD_INT 163
3286: PPUSH
3287: LD_EXP 38
3291: PPUSH
3292: LD_INT 3
3294: PPUSH
3295: LD_INT 1
3297: PPUSH
3298: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arcontrol2 , difficulty_level , 3 , 1 ) ;
3302: LD_EXP 43
3306: PUSH
3307: LD_INT 1
3309: ARRAY
3310: PPUSH
3311: LD_INT 2
3313: PPUSH
3314: LD_INT 159
3316: PPUSH
3317: LD_EXP 38
3321: PPUSH
3322: LD_INT 3
3324: PPUSH
3325: LD_INT 1
3327: PPUSH
3328: CALL 4989 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 2 , arcontrol3 , difficulty_level , 3 , 1 ) ;
3332: LD_EXP 43
3336: PUSH
3337: LD_INT 1
3339: ARRAY
3340: PPUSH
3341: LD_INT 2
3343: PPUSH
3344: LD_INT 160
3346: PPUSH
3347: LD_EXP 38
3351: PPUSH
3352: LD_INT 3
3354: PPUSH
3355: LD_INT 1
3357: PPUSH
3358: CALL 4989 0 6
// SetTech ( 60 , randomedColors [ 1 ] , state_researched ) ;
3362: LD_INT 60
3364: PPUSH
3365: LD_EXP 43
3369: PUSH
3370: LD_INT 1
3372: ARRAY
3373: PPUSH
3374: LD_INT 2
3376: PPUSH
3377: CALL_OW 322
// SetTech ( 61 , randomedColors [ 1 ] , state_researched ) ;
3381: LD_INT 61
3383: PPUSH
3384: LD_EXP 43
3388: PUSH
3389: LD_INT 1
3391: ARRAY
3392: PPUSH
3393: LD_INT 2
3395: PPUSH
3396: CALL_OW 322
// SetTech ( 62 , randomedColors [ 1 ] , state_researched ) ;
3400: LD_INT 62
3402: PPUSH
3403: LD_EXP 43
3407: PUSH
3408: LD_INT 1
3410: ARRAY
3411: PPUSH
3412: LD_INT 2
3414: PPUSH
3415: CALL_OW 322
// SetTech ( 1 , randomedColors [ 1 ] , state_disabled ) ;
3419: LD_INT 1
3421: PPUSH
3422: LD_EXP 43
3426: PUSH
3427: LD_INT 1
3429: ARRAY
3430: PPUSH
3431: LD_INT 0
3433: PPUSH
3434: CALL_OW 322
// SetAttitude ( randomedColors [ 1 ] , randomedColors [ 2 ] , att_friend , true ) ;
3438: LD_EXP 43
3442: PUSH
3443: LD_INT 1
3445: ARRAY
3446: PPUSH
3447: LD_EXP 43
3451: PUSH
3452: LD_INT 2
3454: ARRAY
3455: PPUSH
3456: LD_INT 1
3458: PPUSH
3459: LD_INT 1
3461: PPUSH
3462: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP1 , att_enemy , true ) ;
3466: LD_EXP 43
3470: PUSH
3471: LD_INT 1
3473: ARRAY
3474: PPUSH
3475: LD_EXP 44
3479: PPUSH
3480: LD_INT 2
3482: PPUSH
3483: LD_INT 1
3485: PPUSH
3486: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP2 , att_enemy , true ) ;
3490: LD_EXP 43
3494: PUSH
3495: LD_INT 1
3497: ARRAY
3498: PPUSH
3499: LD_EXP 45
3503: PPUSH
3504: LD_INT 2
3506: PPUSH
3507: LD_INT 1
3509: PPUSH
3510: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP3 , att_enemy , true ) ;
3514: LD_EXP 43
3518: PUSH
3519: LD_INT 1
3521: ARRAY
3522: PPUSH
3523: LD_EXP 46
3527: PPUSH
3528: LD_INT 2
3530: PPUSH
3531: LD_INT 1
3533: PPUSH
3534: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP4 , att_enemy , true ) ;
3538: LD_EXP 43
3542: PUSH
3543: LD_INT 1
3545: ARRAY
3546: PPUSH
3547: LD_EXP 47
3551: PPUSH
3552: LD_INT 2
3554: PPUSH
3555: LD_INT 1
3557: PPUSH
3558: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP1 , att_enemy , true ) ;
3562: LD_EXP 43
3566: PUSH
3567: LD_INT 2
3569: ARRAY
3570: PPUSH
3571: LD_EXP 44
3575: PPUSH
3576: LD_INT 2
3578: PPUSH
3579: LD_INT 1
3581: PPUSH
3582: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP2 , att_enemy , true ) ;
3586: LD_EXP 43
3590: PUSH
3591: LD_INT 2
3593: ARRAY
3594: PPUSH
3595: LD_EXP 45
3599: PPUSH
3600: LD_INT 2
3602: PPUSH
3603: LD_INT 1
3605: PPUSH
3606: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP3 , att_enemy , true ) ;
3610: LD_EXP 43
3614: PUSH
3615: LD_INT 2
3617: ARRAY
3618: PPUSH
3619: LD_EXP 46
3623: PPUSH
3624: LD_INT 2
3626: PPUSH
3627: LD_INT 1
3629: PPUSH
3630: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP4 , att_enemy , true ) ;
3634: LD_EXP 43
3638: PUSH
3639: LD_INT 2
3641: ARRAY
3642: PPUSH
3643: LD_EXP 47
3647: PPUSH
3648: LD_INT 2
3650: PPUSH
3651: LD_INT 1
3653: PPUSH
3654: CALL_OW 80
// end ;
3658: LD_VAR 0 1
3662: RET
// export function PrepareGossudarov ; begin
3663: LD_INT 0
3665: PPUSH
// uc_side = randomedColors [ 1 ] ;
3666: LD_ADDR_OWVAR 20
3670: PUSH
3671: LD_EXP 43
3675: PUSH
3676: LD_INT 1
3678: ARRAY
3679: ST_TO_ADDR
// uc_nation = 3 ;
3680: LD_ADDR_OWVAR 21
3684: PUSH
3685: LD_INT 3
3687: ST_TO_ADDR
// hc_gallery = ru ;
3688: LD_ADDR_OWVAR 33
3692: PUSH
3693: LD_STRING ru
3695: ST_TO_ADDR
// hc_face_number = 61 ;
3696: LD_ADDR_OWVAR 34
3700: PUSH
3701: LD_INT 61
3703: ST_TO_ADDR
// hc_name = Gossudarov ;
3704: LD_ADDR_OWVAR 26
3708: PUSH
3709: LD_STRING Gossudarov
3711: ST_TO_ADDR
// hc_sex = sex_male ;
3712: LD_ADDR_OWVAR 27
3716: PUSH
3717: LD_INT 1
3719: ST_TO_ADDR
// hc_class = 4 ;
3720: LD_ADDR_OWVAR 28
3724: PUSH
3725: LD_INT 4
3727: ST_TO_ADDR
// hc_skills = [ 4 , 5 , 7 , 10 ] ;
3728: LD_ADDR_OWVAR 31
3732: PUSH
3733: LD_INT 4
3735: PUSH
3736: LD_INT 5
3738: PUSH
3739: LD_INT 7
3741: PUSH
3742: LD_INT 10
3744: PUSH
3745: EMPTY
3746: LIST
3747: LIST
3748: LIST
3749: LIST
3750: ST_TO_ADDR
// hc_importance = 100 ;
3751: LD_ADDR_OWVAR 32
3755: PUSH
3756: LD_INT 100
3758: ST_TO_ADDR
// Gossudarov = CreateHuman ;
3759: LD_ADDR_EXP 41
3763: PUSH
3764: CALL_OW 44
3768: ST_TO_ADDR
// PlaceHumanInUnit ( Gossudarov , ardepot ) ;
3769: LD_EXP 41
3773: PPUSH
3774: LD_INT 12
3776: PPUSH
3777: CALL_OW 52
// SetSide ( Gossudarov , 0 ) ;
3781: LD_EXP 41
3785: PPUSH
3786: LD_INT 0
3788: PPUSH
3789: CALL_OW 235
// end ;
3793: LD_VAR 0 1
3797: RET
// export function MultiplayerColorCheck ; var i , tmp ; begin
3798: LD_INT 0
3800: PPUSH
3801: PPUSH
3802: PPUSH
// for i = 1 to Side_Positions do
3803: LD_ADDR_VAR 0 2
3807: PUSH
3808: DOUBLE
3809: LD_INT 1
3811: DEC
3812: ST_TO_ADDR
3813: LD_EXP 25
3817: PUSH
3818: FOR_TO
3819: IFFALSE 3849
// if Side_Positions [ i ] = 1 then
3821: LD_EXP 25
3825: PUSH
3826: LD_VAR 0 2
3830: ARRAY
3831: PUSH
3832: LD_INT 1
3834: EQUAL
3835: IFFALSE 3847
// sideP1 = i ;
3837: LD_ADDR_EXP 44
3841: PUSH
3842: LD_VAR 0 2
3846: ST_TO_ADDR
3847: GO 3818
3849: POP
3850: POP
// for i = 1 to Side_Positions do
3851: LD_ADDR_VAR 0 2
3855: PUSH
3856: DOUBLE
3857: LD_INT 1
3859: DEC
3860: ST_TO_ADDR
3861: LD_EXP 25
3865: PUSH
3866: FOR_TO
3867: IFFALSE 3897
// if Side_Positions [ i ] = 2 then
3869: LD_EXP 25
3873: PUSH
3874: LD_VAR 0 2
3878: ARRAY
3879: PUSH
3880: LD_INT 2
3882: EQUAL
3883: IFFALSE 3895
// sideP2 = i ;
3885: LD_ADDR_EXP 45
3889: PUSH
3890: LD_VAR 0 2
3894: ST_TO_ADDR
3895: GO 3866
3897: POP
3898: POP
// for i = 1 to Side_Positions do
3899: LD_ADDR_VAR 0 2
3903: PUSH
3904: DOUBLE
3905: LD_INT 1
3907: DEC
3908: ST_TO_ADDR
3909: LD_EXP 25
3913: PUSH
3914: FOR_TO
3915: IFFALSE 3945
// if Side_Positions [ i ] = 3 then
3917: LD_EXP 25
3921: PUSH
3922: LD_VAR 0 2
3926: ARRAY
3927: PUSH
3928: LD_INT 3
3930: EQUAL
3931: IFFALSE 3943
// sideP3 = i ;
3933: LD_ADDR_EXP 46
3937: PUSH
3938: LD_VAR 0 2
3942: ST_TO_ADDR
3943: GO 3914
3945: POP
3946: POP
// for i = 1 to Side_Positions do
3947: LD_ADDR_VAR 0 2
3951: PUSH
3952: DOUBLE
3953: LD_INT 1
3955: DEC
3956: ST_TO_ADDR
3957: LD_EXP 25
3961: PUSH
3962: FOR_TO
3963: IFFALSE 3993
// if Side_Positions [ i ] = 4 then
3965: LD_EXP 25
3969: PUSH
3970: LD_VAR 0 2
3974: ARRAY
3975: PUSH
3976: LD_INT 4
3978: EQUAL
3979: IFFALSE 3991
// sideP4 = i ;
3981: LD_ADDR_EXP 47
3985: PUSH
3986: LD_VAR 0 2
3990: ST_TO_ADDR
3991: GO 3962
3993: POP
3994: POP
// randomedColors = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] diff sideP1 ^ sideP2 ^ sideP3 ^ sideP4 ;
3995: LD_ADDR_EXP 43
3999: PUSH
4000: LD_INT 1
4002: PUSH
4003: LD_INT 2
4005: PUSH
4006: LD_INT 3
4008: PUSH
4009: LD_INT 4
4011: PUSH
4012: LD_INT 5
4014: PUSH
4015: LD_INT 6
4017: PUSH
4018: LD_INT 7
4020: PUSH
4021: LD_INT 8
4023: PUSH
4024: EMPTY
4025: LIST
4026: LIST
4027: LIST
4028: LIST
4029: LIST
4030: LIST
4031: LIST
4032: LIST
4033: PUSH
4034: LD_EXP 44
4038: PUSH
4039: LD_EXP 45
4043: ADD
4044: PUSH
4045: LD_EXP 46
4049: ADD
4050: PUSH
4051: LD_EXP 47
4055: ADD
4056: DIFF
4057: ST_TO_ADDR
// end ;
4058: LD_VAR 0 1
4062: RET
// export function PrepareTanks ( side ) ; var i , x , y , veh ; begin
4063: LD_INT 0
4065: PPUSH
4066: PPUSH
4067: PPUSH
4068: PPUSH
4069: PPUSH
// for i in FilterAllUnits ( [ [ f_side , side ] , [ f_class , 3 ] ] ) do
4070: LD_ADDR_VAR 0 3
4074: PUSH
4075: LD_INT 22
4077: PUSH
4078: LD_VAR 0 1
4082: PUSH
4083: EMPTY
4084: LIST
4085: LIST
4086: PUSH
4087: LD_INT 25
4089: PUSH
4090: LD_INT 3
4092: PUSH
4093: EMPTY
4094: LIST
4095: LIST
4096: PUSH
4097: EMPTY
4098: LIST
4099: LIST
4100: PPUSH
4101: CALL_OW 69
4105: PUSH
4106: FOR_IN
4107: IFFALSE 4450
// begin uc_side = side ;
4109: LD_ADDR_OWVAR 20
4113: PUSH
4114: LD_VAR 0 1
4118: ST_TO_ADDR
// uc_nation = 3 ;
4119: LD_ADDR_OWVAR 21
4123: PUSH
4124: LD_INT 3
4126: ST_TO_ADDR
// if difficulty_level = 5 then
4127: LD_EXP 38
4131: PUSH
4132: LD_INT 5
4134: EQUAL
4135: IFFALSE 4145
// vc_engine = 3 ;
4137: LD_ADDR_OWVAR 39
4141: PUSH
4142: LD_INT 3
4144: ST_TO_ADDR
// if difficulty_level > 5 then
4145: LD_EXP 38
4149: PUSH
4150: LD_INT 5
4152: GREATER
4153: IFFALSE 4186
// vc_engine = [ 1 , 3 , 3 ] [ Rand ( 1 , 3 ) ] ;
4155: LD_ADDR_OWVAR 39
4159: PUSH
4160: LD_INT 1
4162: PUSH
4163: LD_INT 3
4165: PUSH
4166: LD_INT 3
4168: PUSH
4169: EMPTY
4170: LIST
4171: LIST
4172: LIST
4173: PUSH
4174: LD_INT 1
4176: PPUSH
4177: LD_INT 3
4179: PPUSH
4180: CALL_OW 12
4184: ARRAY
4185: ST_TO_ADDR
// if difficulty_level > 7 then
4186: LD_EXP 38
4190: PUSH
4191: LD_INT 7
4193: GREATER
4194: IFFALSE 4223
// vc_engine = [ 1 , 3 ] [ Rand ( 1 , 2 ) ] ;
4196: LD_ADDR_OWVAR 39
4200: PUSH
4201: LD_INT 1
4203: PUSH
4204: LD_INT 3
4206: PUSH
4207: EMPTY
4208: LIST
4209: LIST
4210: PUSH
4211: LD_INT 1
4213: PPUSH
4214: LD_INT 2
4216: PPUSH
4217: CALL_OW 12
4221: ARRAY
4222: ST_TO_ADDR
// if difficulty_level > 8 then
4223: LD_EXP 38
4227: PUSH
4228: LD_INT 8
4230: GREATER
4231: IFFALSE 4241
// vc_engine = 1 ;
4233: LD_ADDR_OWVAR 39
4237: PUSH
4238: LD_INT 1
4240: ST_TO_ADDR
// vc_control = 1 ;
4241: LD_ADDR_OWVAR 38
4245: PUSH
4246: LD_INT 1
4248: ST_TO_ADDR
// vc_weapon = [ 44 , 43 , 46 , 45 ] [ Rand ( 1 , 4 ) ] ;
4249: LD_ADDR_OWVAR 40
4253: PUSH
4254: LD_INT 44
4256: PUSH
4257: LD_INT 43
4259: PUSH
4260: LD_INT 46
4262: PUSH
4263: LD_INT 45
4265: PUSH
4266: EMPTY
4267: LIST
4268: LIST
4269: LIST
4270: LIST
4271: PUSH
4272: LD_INT 1
4274: PPUSH
4275: LD_INT 4
4277: PPUSH
4278: CALL_OW 12
4282: ARRAY
4283: ST_TO_ADDR
// if vc_weapon = 46 then
4284: LD_OWVAR 40
4288: PUSH
4289: LD_INT 46
4291: EQUAL
4292: IFFALSE 4304
// vc_chassis = 24 else
4294: LD_ADDR_OWVAR 37
4298: PUSH
4299: LD_INT 24
4301: ST_TO_ADDR
4302: GO 4339
// vc_chassis = [ 24 , 23 , 22 , 21 ] [ Rand ( 1 , 4 ) ] ;
4304: LD_ADDR_OWVAR 37
4308: PUSH
4309: LD_INT 24
4311: PUSH
4312: LD_INT 23
4314: PUSH
4315: LD_INT 22
4317: PUSH
4318: LD_INT 21
4320: PUSH
4321: EMPTY
4322: LIST
4323: LIST
4324: LIST
4325: LIST
4326: PUSH
4327: LD_INT 1
4329: PPUSH
4330: LD_INT 4
4332: PPUSH
4333: CALL_OW 12
4337: ARRAY
4338: ST_TO_ADDR
// veh = CreateVehicle ;
4339: LD_ADDR_VAR 0 6
4343: PUSH
4344: CALL_OW 45
4348: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
4349: LD_ADDR_VAR 0 4
4353: PUSH
4354: LD_INT 22
4356: PUSH
4357: LD_VAR 0 1
4361: PUSH
4362: EMPTY
4363: LIST
4364: LIST
4365: PPUSH
4366: CALL_OW 69
4370: PUSH
4371: LD_INT 1
4373: ARRAY
4374: PPUSH
4375: CALL_OW 250
4379: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
4380: LD_ADDR_VAR 0 5
4384: PUSH
4385: LD_INT 22
4387: PUSH
4388: LD_VAR 0 1
4392: PUSH
4393: EMPTY
4394: LIST
4395: LIST
4396: PPUSH
4397: CALL_OW 69
4401: PUSH
4402: LD_INT 1
4404: ARRAY
4405: PPUSH
4406: CALL_OW 251
4410: ST_TO_ADDR
// SetDir ( veh , 1 ) ;
4411: LD_VAR 0 6
4415: PPUSH
4416: LD_INT 1
4418: PPUSH
4419: CALL_OW 233
// PlaceUnitXYR ( veh , x , y , 5 , false ) ;
4423: LD_VAR 0 6
4427: PPUSH
4428: LD_VAR 0 4
4432: PPUSH
4433: LD_VAR 0 5
4437: PPUSH
4438: LD_INT 5
4440: PPUSH
4441: LD_INT 0
4443: PPUSH
4444: CALL_OW 50
// end ;
4448: GO 4106
4450: POP
4451: POP
// end ;
4452: LD_VAR 0 2
4456: RET
// export function PrepareDifficulty ; begin
4457: LD_INT 0
4459: PPUSH
// SetTech ( 28 , randomedColors [ 1 ] , state_disabled ) ;
4460: LD_INT 28
4462: PPUSH
4463: LD_EXP 43
4467: PUSH
4468: LD_INT 1
4470: ARRAY
4471: PPUSH
4472: LD_INT 0
4474: PPUSH
4475: CALL_OW 322
// SetTech ( 28 , randomedColors [ 2 ] , state_disabled ) ;
4479: LD_INT 28
4481: PPUSH
4482: LD_EXP 43
4486: PUSH
4487: LD_INT 2
4489: ARRAY
4490: PPUSH
4491: LD_INT 0
4493: PPUSH
4494: CALL_OW 322
// SetTech ( 51 , randomedColors [ 1 ] , state_disabled ) ;
4498: LD_INT 51
4500: PPUSH
4501: LD_EXP 43
4505: PUSH
4506: LD_INT 1
4508: ARRAY
4509: PPUSH
4510: LD_INT 0
4512: PPUSH
4513: CALL_OW 322
// SetTech ( 52 , randomedColors [ 1 ] , state_disabled ) ;
4517: LD_INT 52
4519: PPUSH
4520: LD_EXP 43
4524: PUSH
4525: LD_INT 1
4527: ARRAY
4528: PPUSH
4529: LD_INT 0
4531: PPUSH
4532: CALL_OW 322
// SetTech ( 53 , randomedColors [ 1 ] , state_disabled ) ;
4536: LD_INT 53
4538: PPUSH
4539: LD_EXP 43
4543: PUSH
4544: LD_INT 1
4546: ARRAY
4547: PPUSH
4548: LD_INT 0
4550: PPUSH
4551: CALL_OW 322
// if difficulty_level > 5 then
4555: LD_EXP 38
4559: PUSH
4560: LD_INT 5
4562: GREATER
4563: IFFALSE 4698
// begin SetTech ( 48 , randomedColors [ 2 ] , state_researched ) ;
4565: LD_INT 48
4567: PPUSH
4568: LD_EXP 43
4572: PUSH
4573: LD_INT 2
4575: ARRAY
4576: PPUSH
4577: LD_INT 2
4579: PPUSH
4580: CALL_OW 322
// SetTech ( 51 , randomedColors [ 2 ] , state_researched ) ;
4584: LD_INT 51
4586: PPUSH
4587: LD_EXP 43
4591: PUSH
4592: LD_INT 2
4594: ARRAY
4595: PPUSH
4596: LD_INT 2
4598: PPUSH
4599: CALL_OW 322
// SetTech ( 54 , randomedColors [ 2 ] , state_researched ) ;
4603: LD_INT 54
4605: PPUSH
4606: LD_EXP 43
4610: PUSH
4611: LD_INT 2
4613: ARRAY
4614: PPUSH
4615: LD_INT 2
4617: PPUSH
4618: CALL_OW 322
// SetTech ( 57 , randomedColors [ 2 ] , state_researched ) ;
4622: LD_INT 57
4624: PPUSH
4625: LD_EXP 43
4629: PUSH
4630: LD_INT 2
4632: ARRAY
4633: PPUSH
4634: LD_INT 2
4636: PPUSH
4637: CALL_OW 322
// SetTech ( 60 , randomedColors [ 2 ] , state_researched ) ;
4641: LD_INT 60
4643: PPUSH
4644: LD_EXP 43
4648: PUSH
4649: LD_INT 2
4651: ARRAY
4652: PPUSH
4653: LD_INT 2
4655: PPUSH
4656: CALL_OW 322
// SetTech ( 63 , randomedColors [ 2 ] , state_researched ) ;
4660: LD_INT 63
4662: PPUSH
4663: LD_EXP 43
4667: PUSH
4668: LD_INT 2
4670: ARRAY
4671: PPUSH
4672: LD_INT 2
4674: PPUSH
4675: CALL_OW 322
// SetTech ( 66 , randomedColors [ 2 ] , state_researched ) ;
4679: LD_INT 66
4681: PPUSH
4682: LD_EXP 43
4686: PUSH
4687: LD_INT 2
4689: ARRAY
4690: PPUSH
4691: LD_INT 2
4693: PPUSH
4694: CALL_OW 322
// end ; if difficulty_level > 7 then
4698: LD_EXP 38
4702: PUSH
4703: LD_INT 7
4705: GREATER
4706: IFFALSE 4841
// begin SetTech ( 49 , randomedColors [ 2 ] , state_researched ) ;
4708: LD_INT 49
4710: PPUSH
4711: LD_EXP 43
4715: PUSH
4716: LD_INT 2
4718: ARRAY
4719: PPUSH
4720: LD_INT 2
4722: PPUSH
4723: CALL_OW 322
// SetTech ( 52 , randomedColors [ 2 ] , state_researched ) ;
4727: LD_INT 52
4729: PPUSH
4730: LD_EXP 43
4734: PUSH
4735: LD_INT 2
4737: ARRAY
4738: PPUSH
4739: LD_INT 2
4741: PPUSH
4742: CALL_OW 322
// SetTech ( 55 , randomedColors [ 2 ] , state_researched ) ;
4746: LD_INT 55
4748: PPUSH
4749: LD_EXP 43
4753: PUSH
4754: LD_INT 2
4756: ARRAY
4757: PPUSH
4758: LD_INT 2
4760: PPUSH
4761: CALL_OW 322
// SetTech ( 58 , randomedColors [ 2 ] , state_researched ) ;
4765: LD_INT 58
4767: PPUSH
4768: LD_EXP 43
4772: PUSH
4773: LD_INT 2
4775: ARRAY
4776: PPUSH
4777: LD_INT 2
4779: PPUSH
4780: CALL_OW 322
// SetTech ( 61 , randomedColors [ 2 ] , state_researched ) ;
4784: LD_INT 61
4786: PPUSH
4787: LD_EXP 43
4791: PUSH
4792: LD_INT 2
4794: ARRAY
4795: PPUSH
4796: LD_INT 2
4798: PPUSH
4799: CALL_OW 322
// SetTech ( 64 , randomedColors [ 2 ] , state_researched ) ;
4803: LD_INT 64
4805: PPUSH
4806: LD_EXP 43
4810: PUSH
4811: LD_INT 2
4813: ARRAY
4814: PPUSH
4815: LD_INT 2
4817: PPUSH
4818: CALL_OW 322
// SetTech ( 67 , randomedColors [ 2 ] , state_researched ) ;
4822: LD_INT 67
4824: PPUSH
4825: LD_EXP 43
4829: PUSH
4830: LD_INT 2
4832: ARRAY
4833: PPUSH
4834: LD_INT 2
4836: PPUSH
4837: CALL_OW 322
// end ; if difficulty_level > 8 then
4841: LD_EXP 38
4845: PUSH
4846: LD_INT 8
4848: GREATER
4849: IFFALSE 4984
// begin SetTech ( 50 , randomedColors [ 2 ] , state_researched ) ;
4851: LD_INT 50
4853: PPUSH
4854: LD_EXP 43
4858: PUSH
4859: LD_INT 2
4861: ARRAY
4862: PPUSH
4863: LD_INT 2
4865: PPUSH
4866: CALL_OW 322
// SetTech ( 53 , randomedColors [ 2 ] , state_researched ) ;
4870: LD_INT 53
4872: PPUSH
4873: LD_EXP 43
4877: PUSH
4878: LD_INT 2
4880: ARRAY
4881: PPUSH
4882: LD_INT 2
4884: PPUSH
4885: CALL_OW 322
// SetTech ( 56 , randomedColors [ 2 ] , state_researched ) ;
4889: LD_INT 56
4891: PPUSH
4892: LD_EXP 43
4896: PUSH
4897: LD_INT 2
4899: ARRAY
4900: PPUSH
4901: LD_INT 2
4903: PPUSH
4904: CALL_OW 322
// SetTech ( 59 , randomedColors [ 2 ] , state_researched ) ;
4908: LD_INT 59
4910: PPUSH
4911: LD_EXP 43
4915: PUSH
4916: LD_INT 2
4918: ARRAY
4919: PPUSH
4920: LD_INT 2
4922: PPUSH
4923: CALL_OW 322
// SetTech ( 62 , randomedColors [ 2 ] , state_researched ) ;
4927: LD_INT 62
4929: PPUSH
4930: LD_EXP 43
4934: PUSH
4935: LD_INT 2
4937: ARRAY
4938: PPUSH
4939: LD_INT 2
4941: PPUSH
4942: CALL_OW 322
// SetTech ( 65 , randomedColors [ 2 ] , state_researched ) ;
4946: LD_INT 65
4948: PPUSH
4949: LD_EXP 43
4953: PUSH
4954: LD_INT 2
4956: ARRAY
4957: PPUSH
4958: LD_INT 2
4960: PPUSH
4961: CALL_OW 322
// SetTech ( 68 , randomedColors [ 2 ] , state_researched ) ;
4965: LD_INT 68
4967: PPUSH
4968: LD_EXP 43
4972: PUSH
4973: LD_INT 2
4975: ARRAY
4976: PPUSH
4977: LD_INT 2
4979: PPUSH
4980: CALL_OW 322
// end ; end ;
4984: LD_VAR 0 1
4988: RET
// export function MultiplayerRespawnInside ( side , nation , build , skill , class , count ) ; var i , l , un ; begin
4989: LD_INT 0
4991: PPUSH
4992: PPUSH
4993: PPUSH
4994: PPUSH
// for i = 1 to count do
4995: LD_ADDR_VAR 0 8
4999: PUSH
5000: DOUBLE
5001: LD_INT 1
5003: DEC
5004: ST_TO_ADDR
5005: LD_VAR 0 6
5009: PUSH
5010: FOR_TO
5011: IFFALSE 5155
// begin uc_side = side ;
5013: LD_ADDR_OWVAR 20
5017: PUSH
5018: LD_VAR 0 1
5022: ST_TO_ADDR
// uc_nation = nation ;
5023: LD_ADDR_OWVAR 21
5027: PUSH
5028: LD_VAR 0 2
5032: ST_TO_ADDR
// hc_gallery =  ;
5033: LD_ADDR_OWVAR 33
5037: PUSH
5038: LD_STRING 
5040: ST_TO_ADDR
// hc_name =  ;
5041: LD_ADDR_OWVAR 26
5045: PUSH
5046: LD_STRING 
5048: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
5049: LD_ADDR_OWVAR 29
5053: PUSH
5054: LD_INT 10
5056: PUSH
5057: LD_INT 10
5059: PUSH
5060: EMPTY
5061: LIST
5062: LIST
5063: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
5064: LD_ADDR_OWVAR 31
5068: PUSH
5069: LD_VAR 0 4
5073: PUSH
5074: LD_VAR 0 4
5078: PUSH
5079: LD_VAR 0 4
5083: PUSH
5084: LD_VAR 0 4
5088: PUSH
5089: EMPTY
5090: LIST
5091: LIST
5092: LIST
5093: LIST
5094: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5095: LD_ADDR_OWVAR 27
5099: PUSH
5100: LD_INT 1
5102: PPUSH
5103: LD_INT 2
5105: PPUSH
5106: CALL_OW 12
5110: ST_TO_ADDR
// hc_class = class ;
5111: LD_ADDR_OWVAR 28
5115: PUSH
5116: LD_VAR 0 5
5120: ST_TO_ADDR
// hc_importance = 0 ;
5121: LD_ADDR_OWVAR 32
5125: PUSH
5126: LD_INT 0
5128: ST_TO_ADDR
// un = CreateHuman ;
5129: LD_ADDR_VAR 0 10
5133: PUSH
5134: CALL_OW 44
5138: ST_TO_ADDR
// PlaceHumanInUnit ( un , build ) ;
5139: LD_VAR 0 10
5143: PPUSH
5144: LD_VAR 0 3
5148: PPUSH
5149: CALL_OW 52
// end ;
5153: GO 5010
5155: POP
5156: POP
// end ;
5157: LD_VAR 0 7
5161: RET
// export function PrepareSolBun ( skill , b ) ; var un , dir ; begin
5162: LD_INT 0
5164: PPUSH
5165: PPUSH
5166: PPUSH
// uc_side := randomedColors [ 1 ] ;
5167: LD_ADDR_OWVAR 20
5171: PUSH
5172: LD_EXP 43
5176: PUSH
5177: LD_INT 1
5179: ARRAY
5180: ST_TO_ADDR
// uc_nation := 2 ;
5181: LD_ADDR_OWVAR 21
5185: PUSH
5186: LD_INT 2
5188: ST_TO_ADDR
// hc_gallery =  ;
5189: LD_ADDR_OWVAR 33
5193: PUSH
5194: LD_STRING 
5196: ST_TO_ADDR
// hc_name =  ;
5197: LD_ADDR_OWVAR 26
5201: PUSH
5202: LD_STRING 
5204: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
5205: LD_ADDR_OWVAR 29
5209: PUSH
5210: LD_INT 10
5212: PUSH
5213: LD_INT 10
5215: PUSH
5216: EMPTY
5217: LIST
5218: LIST
5219: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
5220: LD_ADDR_OWVAR 31
5224: PUSH
5225: LD_VAR 0 1
5229: PUSH
5230: LD_VAR 0 1
5234: PUSH
5235: LD_VAR 0 1
5239: PUSH
5240: LD_VAR 0 1
5244: PUSH
5245: EMPTY
5246: LIST
5247: LIST
5248: LIST
5249: LIST
5250: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5251: LD_ADDR_OWVAR 27
5255: PUSH
5256: LD_INT 1
5258: PPUSH
5259: LD_INT 2
5261: PPUSH
5262: CALL_OW 12
5266: ST_TO_ADDR
// hc_class = 8 ;
5267: LD_ADDR_OWVAR 28
5271: PUSH
5272: LD_INT 8
5274: ST_TO_ADDR
// hc_importance = 0 ;
5275: LD_ADDR_OWVAR 32
5279: PUSH
5280: LD_INT 0
5282: ST_TO_ADDR
// un = CreateHuman ;
5283: LD_ADDR_VAR 0 4
5287: PUSH
5288: CALL_OW 44
5292: ST_TO_ADDR
// dir := GetDir ( b ) - 3 ;
5293: LD_ADDR_VAR 0 5
5297: PUSH
5298: LD_VAR 0 2
5302: PPUSH
5303: CALL_OW 254
5307: PUSH
5308: LD_INT 3
5310: MINUS
5311: ST_TO_ADDR
// if dir < 0 then
5312: LD_VAR 0 5
5316: PUSH
5317: LD_INT 0
5319: LESS
5320: IFFALSE 5336
// dir := 6 + dir ;
5322: LD_ADDR_VAR 0 5
5326: PUSH
5327: LD_INT 6
5329: PUSH
5330: LD_VAR 0 5
5334: PLUS
5335: ST_TO_ADDR
// SetDir ( un , dir ) ;
5336: LD_VAR 0 4
5340: PPUSH
5341: LD_VAR 0 5
5345: PPUSH
5346: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
5350: LD_VAR 0 4
5354: PPUSH
5355: LD_VAR 0 2
5359: PPUSH
5360: CALL_OW 52
// end ;
5364: LD_VAR 0 3
5368: RET
// export function ResAllTechs ( side , lab , nation ) ; var i , tech , cout ; begin
5369: LD_INT 0
5371: PPUSH
5372: PPUSH
5373: PPUSH
5374: PPUSH
// for i = 1 to 72 do
5375: LD_ADDR_VAR 0 5
5379: PUSH
5380: DOUBLE
5381: LD_INT 1
5383: DEC
5384: ST_TO_ADDR
5385: LD_INT 72
5387: PUSH
5388: FOR_TO
5389: IFFALSE 5447
// if GetTech ( i , side ) = state_enabled and TechNationAvailable ( i , nation ) = true then
5391: LD_VAR 0 5
5395: PPUSH
5396: LD_VAR 0 1
5400: PPUSH
5401: CALL_OW 321
5405: PUSH
5406: LD_INT 1
5408: EQUAL
5409: PUSH
5410: LD_VAR 0 5
5414: PPUSH
5415: LD_VAR 0 3
5419: PPUSH
5420: CALL_OW 482
5424: PUSH
5425: LD_INT 1
5427: EQUAL
5428: AND
5429: IFFALSE 5445
// AddComResearch ( lab , i ) ;
5431: LD_VAR 0 2
5435: PPUSH
5436: LD_VAR 0 5
5440: PPUSH
5441: CALL_OW 184
5445: GO 5388
5447: POP
5448: POP
// end ;
5449: LD_VAR 0 4
5453: RET
// export function LinkRemoteVehicle ( side , area , build ) ; var i , list1 , list2 ; begin
5454: LD_INT 0
5456: PPUSH
5457: PPUSH
5458: PPUSH
5459: PPUSH
// list1 = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 251 ] , [ f_not , [ f_linked ] ] ] ) ;
5460: LD_ADDR_VAR 0 6
5464: PUSH
5465: LD_VAR 0 2
5469: PPUSH
5470: LD_INT 22
5472: PUSH
5473: LD_VAR 0 1
5477: PUSH
5478: EMPTY
5479: LIST
5480: LIST
5481: PUSH
5482: LD_INT 21
5484: PUSH
5485: LD_INT 2
5487: PUSH
5488: EMPTY
5489: LIST
5490: LIST
5491: PUSH
5492: LD_INT 24
5494: PUSH
5495: LD_INT 251
5497: PUSH
5498: EMPTY
5499: LIST
5500: LIST
5501: PUSH
5502: LD_INT 3
5504: PUSH
5505: LD_INT 61
5507: PUSH
5508: EMPTY
5509: LIST
5510: PUSH
5511: EMPTY
5512: LIST
5513: LIST
5514: PUSH
5515: EMPTY
5516: LIST
5517: LIST
5518: LIST
5519: LIST
5520: PPUSH
5521: CALL_OW 70
5525: ST_TO_ADDR
// list2 = UnitsInside ( build ) ;
5526: LD_ADDR_VAR 0 7
5530: PUSH
5531: LD_VAR 0 3
5535: PPUSH
5536: CALL_OW 313
5540: ST_TO_ADDR
// if not list1 or not list2 then
5541: LD_VAR 0 6
5545: NOT
5546: PUSH
5547: LD_VAR 0 7
5551: NOT
5552: OR
5553: IFFALSE 5557
// exit ;
5555: GO 5633
// if list1 > 0 and list2 > 0 then
5557: LD_VAR 0 6
5561: PUSH
5562: LD_INT 0
5564: GREATER
5565: PUSH
5566: LD_VAR 0 7
5570: PUSH
5571: LD_INT 0
5573: GREATER
5574: AND
5575: IFFALSE 5633
// for i = 1 to list1 do
5577: LD_ADDR_VAR 0 5
5581: PUSH
5582: DOUBLE
5583: LD_INT 1
5585: DEC
5586: ST_TO_ADDR
5587: LD_VAR 0 6
5591: PUSH
5592: FOR_TO
5593: IFFALSE 5631
// AddComLinkTo ( list1 [ i ] , list2 [ Rand ( 1 , list2 ) ] ) ;
5595: LD_VAR 0 6
5599: PUSH
5600: LD_VAR 0 5
5604: ARRAY
5605: PPUSH
5606: LD_VAR 0 7
5610: PUSH
5611: LD_INT 1
5613: PPUSH
5614: LD_VAR 0 7
5618: PPUSH
5619: CALL_OW 12
5623: ARRAY
5624: PPUSH
5625: CALL_OW 195
5629: GO 5592
5631: POP
5632: POP
// end ;
5633: LD_VAR 0 4
5637: RET
// export function PlaceMines ( area , side , n ) ; var i , r , x ; begin
5638: LD_INT 0
5640: PPUSH
5641: PPUSH
5642: PPUSH
5643: PPUSH
// r := 100 ;
5644: LD_ADDR_VAR 0 6
5648: PUSH
5649: LD_INT 100
5651: ST_TO_ADDR
// x := 0 ;
5652: LD_ADDR_VAR 0 7
5656: PUSH
5657: LD_INT 0
5659: ST_TO_ADDR
// while ( x < n ) do
5660: LD_VAR 0 7
5664: PUSH
5665: LD_VAR 0 3
5669: LESS
5670: IFFALSE 5959
// for i = 1 to AreaToList ( area , 0 ) [ 1 ] do
5672: LD_ADDR_VAR 0 5
5676: PUSH
5677: DOUBLE
5678: LD_INT 1
5680: DEC
5681: ST_TO_ADDR
5682: LD_VAR 0 1
5686: PPUSH
5687: LD_INT 0
5689: PPUSH
5690: CALL_OW 517
5694: PUSH
5695: LD_INT 1
5697: ARRAY
5698: PUSH
5699: FOR_TO
5700: IFFALSE 5955
// begin if r > 50 then
5702: LD_VAR 0 6
5706: PUSH
5707: LD_INT 50
5709: GREATER
5710: IFFALSE 5931
// begin if not MineAtPos ( AreaToList ( area , 0 ) [ 1 ] [ i ] , AreaToList ( area , 0 ) [ 2 ] [ i ] ) then
5712: LD_VAR 0 1
5716: PPUSH
5717: LD_INT 0
5719: PPUSH
5720: CALL_OW 517
5724: PUSH
5725: LD_INT 1
5727: ARRAY
5728: PUSH
5729: LD_VAR 0 5
5733: ARRAY
5734: PPUSH
5735: LD_VAR 0 1
5739: PPUSH
5740: LD_INT 0
5742: PPUSH
5743: CALL_OW 517
5747: PUSH
5748: LD_INT 2
5750: ARRAY
5751: PUSH
5752: LD_VAR 0 5
5756: ARRAY
5757: PPUSH
5758: CALL_OW 458
5762: NOT
5763: IFFALSE 5915
// begin PlaceMine ( AreaToList ( area , 0 ) [ 1 ] [ i ] , AreaToList ( area , 0 ) [ 2 ] [ i ] , side , 0 ) ;
5765: LD_VAR 0 1
5769: PPUSH
5770: LD_INT 0
5772: PPUSH
5773: CALL_OW 517
5777: PUSH
5778: LD_INT 1
5780: ARRAY
5781: PUSH
5782: LD_VAR 0 5
5786: ARRAY
5787: PPUSH
5788: LD_VAR 0 1
5792: PPUSH
5793: LD_INT 0
5795: PPUSH
5796: CALL_OW 517
5800: PUSH
5801: LD_INT 2
5803: ARRAY
5804: PUSH
5805: LD_VAR 0 5
5809: ARRAY
5810: PPUSH
5811: LD_VAR 0 2
5815: PPUSH
5816: LD_INT 0
5818: PPUSH
5819: CALL_OW 454
// arabianMines := Insert ( arabianMines , 1 , [ AreaToList ( area , 0 ) [ 1 ] [ i ] , AreaToList ( area , 0 ) [ 2 ] [ i ] ] ) ;
5823: LD_ADDR_EXP 42
5827: PUSH
5828: LD_EXP 42
5832: PPUSH
5833: LD_INT 1
5835: PPUSH
5836: LD_VAR 0 1
5840: PPUSH
5841: LD_INT 0
5843: PPUSH
5844: CALL_OW 517
5848: PUSH
5849: LD_INT 1
5851: ARRAY
5852: PUSH
5853: LD_VAR 0 5
5857: ARRAY
5858: PUSH
5859: LD_VAR 0 1
5863: PPUSH
5864: LD_INT 0
5866: PPUSH
5867: CALL_OW 517
5871: PUSH
5872: LD_INT 2
5874: ARRAY
5875: PUSH
5876: LD_VAR 0 5
5880: ARRAY
5881: PUSH
5882: EMPTY
5883: LIST
5884: LIST
5885: PPUSH
5886: CALL_OW 2
5890: ST_TO_ADDR
// r := 0 ;
5891: LD_ADDR_VAR 0 6
5895: PUSH
5896: LD_INT 0
5898: ST_TO_ADDR
// x := x + 1 ;
5899: LD_ADDR_VAR 0 7
5903: PUSH
5904: LD_VAR 0 7
5908: PUSH
5909: LD_INT 1
5911: PLUS
5912: ST_TO_ADDR
// end else
5913: GO 5929
// r := r + 35 ;
5915: LD_ADDR_VAR 0 6
5919: PUSH
5920: LD_VAR 0 6
5924: PUSH
5925: LD_INT 35
5927: PLUS
5928: ST_TO_ADDR
// end else
5929: GO 5953
// r := r + rand ( 10 , 25 ) ;
5931: LD_ADDR_VAR 0 6
5935: PUSH
5936: LD_VAR 0 6
5940: PUSH
5941: LD_INT 10
5943: PPUSH
5944: LD_INT 25
5946: PPUSH
5947: CALL_OW 12
5951: PLUS
5952: ST_TO_ADDR
// end ;
5953: GO 5699
5955: POP
5956: POP
5957: GO 5660
// end ;
5959: LD_VAR 0 4
5963: RET
// export function EnterBunkerOrBarrack ( side , area ) ; var i , j , soldiers_list , turretList , temp , barrackList , insideUnits ; begin
5964: LD_INT 0
5966: PPUSH
5967: PPUSH
5968: PPUSH
5969: PPUSH
5970: PPUSH
5971: PPUSH
5972: PPUSH
5973: PPUSH
// soldiers_list = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_outside ] , [ f_lives , 700 ] , [ f_not , [ f_hastask ] ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
5974: LD_ADDR_VAR 0 6
5978: PUSH
5979: LD_VAR 0 2
5983: PPUSH
5984: LD_INT 22
5986: PUSH
5987: LD_VAR 0 1
5991: PUSH
5992: EMPTY
5993: LIST
5994: LIST
5995: PUSH
5996: LD_INT 56
5998: PUSH
5999: EMPTY
6000: LIST
6001: PUSH
6002: LD_INT 24
6004: PUSH
6005: LD_INT 700
6007: PUSH
6008: EMPTY
6009: LIST
6010: LIST
6011: PUSH
6012: LD_INT 3
6014: PUSH
6015: LD_INT 60
6017: PUSH
6018: EMPTY
6019: LIST
6020: PUSH
6021: EMPTY
6022: LIST
6023: LIST
6024: PUSH
6025: LD_INT 2
6027: PUSH
6028: LD_INT 25
6030: PUSH
6031: LD_INT 1
6033: PUSH
6034: EMPTY
6035: LIST
6036: LIST
6037: PUSH
6038: LD_INT 25
6040: PUSH
6041: LD_INT 5
6043: PUSH
6044: EMPTY
6045: LIST
6046: LIST
6047: PUSH
6048: LD_INT 25
6050: PUSH
6051: LD_INT 8
6053: PUSH
6054: EMPTY
6055: LIST
6056: LIST
6057: PUSH
6058: LD_INT 25
6060: PUSH
6061: LD_INT 9
6063: PUSH
6064: EMPTY
6065: LIST
6066: LIST
6067: PUSH
6068: EMPTY
6069: LIST
6070: LIST
6071: LIST
6072: LIST
6073: LIST
6074: PUSH
6075: EMPTY
6076: LIST
6077: LIST
6078: LIST
6079: LIST
6080: LIST
6081: PPUSH
6082: CALL_OW 70
6086: ST_TO_ADDR
// turretList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_btype , b_bunker ] , [ f_empty ] , [ f_lives , 251 ] ] ) ;
6087: LD_ADDR_VAR 0 7
6091: PUSH
6092: LD_VAR 0 2
6096: PPUSH
6097: LD_INT 22
6099: PUSH
6100: LD_VAR 0 1
6104: PUSH
6105: EMPTY
6106: LIST
6107: LIST
6108: PUSH
6109: LD_INT 30
6111: PUSH
6112: LD_INT 32
6114: PUSH
6115: EMPTY
6116: LIST
6117: LIST
6118: PUSH
6119: LD_INT 58
6121: PUSH
6122: EMPTY
6123: LIST
6124: PUSH
6125: LD_INT 24
6127: PUSH
6128: LD_INT 251
6130: PUSH
6131: EMPTY
6132: LIST
6133: LIST
6134: PUSH
6135: EMPTY
6136: LIST
6137: LIST
6138: LIST
6139: LIST
6140: PPUSH
6141: CALL_OW 70
6145: ST_TO_ADDR
// barrackList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_or , [ f_btype , 4 ] , [ f_btype , 5 ] ] , [ f_lives , 251 ] ] ) ;
6146: LD_ADDR_VAR 0 9
6150: PUSH
6151: LD_VAR 0 2
6155: PPUSH
6156: LD_INT 22
6158: PUSH
6159: LD_VAR 0 1
6163: PUSH
6164: EMPTY
6165: LIST
6166: LIST
6167: PUSH
6168: LD_INT 2
6170: PUSH
6171: LD_INT 30
6173: PUSH
6174: LD_INT 4
6176: PUSH
6177: EMPTY
6178: LIST
6179: LIST
6180: PUSH
6181: LD_INT 30
6183: PUSH
6184: LD_INT 5
6186: PUSH
6187: EMPTY
6188: LIST
6189: LIST
6190: PUSH
6191: EMPTY
6192: LIST
6193: LIST
6194: LIST
6195: PUSH
6196: LD_INT 24
6198: PUSH
6199: LD_INT 251
6201: PUSH
6202: EMPTY
6203: LIST
6204: LIST
6205: PUSH
6206: EMPTY
6207: LIST
6208: LIST
6209: LIST
6210: PPUSH
6211: CALL_OW 70
6215: ST_TO_ADDR
// if barrackList > 0 then
6216: LD_VAR 0 9
6220: PUSH
6221: LD_INT 0
6223: GREATER
6224: IFFALSE 6362
// begin if turretList = 0 then
6226: LD_VAR 0 7
6230: PUSH
6231: LD_INT 0
6233: EQUAL
6234: IFFALSE 6266
// begin ComEnterUnit ( soldiers_list , barrackList [ Rand ( 1 , barrackList ) ] ) ;
6236: LD_VAR 0 6
6240: PPUSH
6241: LD_VAR 0 9
6245: PUSH
6246: LD_INT 1
6248: PPUSH
6249: LD_VAR 0 9
6253: PPUSH
6254: CALL_OW 12
6258: ARRAY
6259: PPUSH
6260: CALL_OW 120
// end else
6264: GO 6362
// begin for i in barrackList do
6266: LD_ADDR_VAR 0 4
6270: PUSH
6271: LD_VAR 0 9
6275: PUSH
6276: FOR_IN
6277: IFFALSE 6360
// begin insideUnits = UnitsInside ( i ) ;
6279: LD_ADDR_VAR 0 10
6283: PUSH
6284: LD_VAR 0 4
6288: PPUSH
6289: CALL_OW 313
6293: ST_TO_ADDR
// if insideUnits > 0 then
6294: LD_VAR 0 10
6298: PUSH
6299: LD_INT 0
6301: GREATER
6302: IFFALSE 6326
// ComEnterUnit ( insideUnits [ 1 ] , turretList [ 1 ] ) ;
6304: LD_VAR 0 10
6308: PUSH
6309: LD_INT 1
6311: ARRAY
6312: PPUSH
6313: LD_VAR 0 7
6317: PUSH
6318: LD_INT 1
6320: ARRAY
6321: PPUSH
6322: CALL_OW 120
// if soldiers_list > 0 then
6326: LD_VAR 0 6
6330: PUSH
6331: LD_INT 0
6333: GREATER
6334: IFFALSE 6358
// ComEnterUnit ( soldiers_list [ 1 ] , turretList [ 1 ] ) ;
6336: LD_VAR 0 6
6340: PUSH
6341: LD_INT 1
6343: ARRAY
6344: PPUSH
6345: LD_VAR 0 7
6349: PUSH
6350: LD_INT 1
6352: ARRAY
6353: PPUSH
6354: CALL_OW 120
// end ;
6358: GO 6276
6360: POP
6361: POP
// end ; end ; end ;
6362: LD_VAR 0 3
6366: RET
// export function RepairAndRebuildBase ( side , depot , baseArea , destroyedBuildings ) ; var i , engineerList , damageBuildings , nearDepot ; begin
6367: LD_INT 0
6369: PPUSH
6370: PPUSH
6371: PPUSH
6372: PPUSH
6373: PPUSH
// engineerList = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 2 ] ] ) ;
6374: LD_ADDR_VAR 0 7
6378: PUSH
6379: LD_INT 22
6381: PUSH
6382: LD_VAR 0 1
6386: PUSH
6387: EMPTY
6388: LIST
6389: LIST
6390: PUSH
6391: LD_INT 25
6393: PUSH
6394: LD_INT 2
6396: PUSH
6397: EMPTY
6398: LIST
6399: LIST
6400: PUSH
6401: EMPTY
6402: LIST
6403: LIST
6404: PPUSH
6405: CALL_OW 69
6409: ST_TO_ADDR
// damageBuildings = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
6410: LD_ADDR_VAR 0 8
6414: PUSH
6415: LD_VAR 0 3
6419: PPUSH
6420: LD_INT 22
6422: PUSH
6423: LD_VAR 0 1
6427: PUSH
6428: EMPTY
6429: LIST
6430: LIST
6431: PUSH
6432: LD_INT 21
6434: PUSH
6435: LD_INT 3
6437: PUSH
6438: EMPTY
6439: LIST
6440: LIST
6441: PUSH
6442: LD_INT 3
6444: PUSH
6445: LD_INT 24
6447: PUSH
6448: LD_INT 1000
6450: PUSH
6451: EMPTY
6452: LIST
6453: LIST
6454: PUSH
6455: EMPTY
6456: LIST
6457: LIST
6458: PUSH
6459: EMPTY
6460: LIST
6461: LIST
6462: LIST
6463: PPUSH
6464: CALL_OW 70
6468: ST_TO_ADDR
// if damageBuildings > 0 and engineerList > 0 then
6469: LD_VAR 0 8
6473: PUSH
6474: LD_INT 0
6476: GREATER
6477: PUSH
6478: LD_VAR 0 7
6482: PUSH
6483: LD_INT 0
6485: GREATER
6486: AND
6487: IFFALSE 6545
// begin ComExitBuilding ( UnitFilter ( engineerList , [ f_inside ] ) ) ;
6489: LD_VAR 0 7
6493: PPUSH
6494: LD_INT 54
6496: PUSH
6497: EMPTY
6498: LIST
6499: PPUSH
6500: CALL_OW 72
6504: PPUSH
6505: CALL_OW 122
// ComRepairBuilding ( UnitFilter ( engineerList , [ f_not , [ f_inside ] ] ) , damageBuildings [ 1 ] ) ;
6509: LD_VAR 0 7
6513: PPUSH
6514: LD_INT 3
6516: PUSH
6517: LD_INT 54
6519: PUSH
6520: EMPTY
6521: LIST
6522: PUSH
6523: EMPTY
6524: LIST
6525: LIST
6526: PPUSH
6527: CALL_OW 72
6531: PPUSH
6532: LD_VAR 0 8
6536: PUSH
6537: LD_INT 1
6539: ARRAY
6540: PPUSH
6541: CALL_OW 130
// end ; if damageBuildings = 0 and engineerList > 0 and destroyedBuildings > 0 then
6545: LD_VAR 0 8
6549: PUSH
6550: LD_INT 0
6552: EQUAL
6553: PUSH
6554: LD_VAR 0 7
6558: PUSH
6559: LD_INT 0
6561: GREATER
6562: AND
6563: PUSH
6564: LD_VAR 0 4
6568: PUSH
6569: LD_INT 0
6571: GREATER
6572: AND
6573: IFFALSE 6658
// begin ComExitBuilding ( UnitFilter ( engineerList , [ f_inside ] ) ) ;
6575: LD_VAR 0 7
6579: PPUSH
6580: LD_INT 54
6582: PUSH
6583: EMPTY
6584: LIST
6585: PPUSH
6586: CALL_OW 72
6590: PPUSH
6591: CALL_OW 122
// ComBuild ( UnitFilter ( engineerList , [ f_not , [ f_inside ] ] ) , destroyedBuildings [ 1 ] , destroyedBuildings [ 2 ] , destroyedBuildings [ 3 ] , destroyedBuildings [ 4 ] ) ;
6595: LD_VAR 0 7
6599: PPUSH
6600: LD_INT 3
6602: PUSH
6603: LD_INT 54
6605: PUSH
6606: EMPTY
6607: LIST
6608: PUSH
6609: EMPTY
6610: LIST
6611: LIST
6612: PPUSH
6613: CALL_OW 72
6617: PPUSH
6618: LD_VAR 0 4
6622: PUSH
6623: LD_INT 1
6625: ARRAY
6626: PPUSH
6627: LD_VAR 0 4
6631: PUSH
6632: LD_INT 2
6634: ARRAY
6635: PPUSH
6636: LD_VAR 0 4
6640: PUSH
6641: LD_INT 3
6643: ARRAY
6644: PPUSH
6645: LD_VAR 0 4
6649: PUSH
6650: LD_INT 4
6652: ARRAY
6653: PPUSH
6654: CALL_OW 145
// end ; if damageBuildings = 0 and engineerList > 0 and destroyedBuildings = 0 then
6658: LD_VAR 0 8
6662: PUSH
6663: LD_INT 0
6665: EQUAL
6666: PUSH
6667: LD_VAR 0 7
6671: PUSH
6672: LD_INT 0
6674: GREATER
6675: AND
6676: PUSH
6677: LD_VAR 0 4
6681: PUSH
6682: LD_INT 0
6684: EQUAL
6685: AND
6686: IFFALSE 6720
// ComEnterUnit ( UnitFilter ( engineerList , [ f_not , [ f_inside ] ] ) , depot ) ;
6688: LD_VAR 0 7
6692: PPUSH
6693: LD_INT 3
6695: PUSH
6696: LD_INT 54
6698: PUSH
6699: EMPTY
6700: LIST
6701: PUSH
6702: EMPTY
6703: LIST
6704: LIST
6705: PPUSH
6706: CALL_OW 72
6710: PPUSH
6711: LD_VAR 0 2
6715: PPUSH
6716: CALL_OW 120
// end ;
6720: LD_VAR 0 5
6724: RET
// export function HealUnitInBase ( side , healArea , baseArea , build ) ; var sci_list , sci_listOutside , i , j , damageUnits , unitsToHeal , tmp , rnd ; begin
6725: LD_INT 0
6727: PPUSH
6728: PPUSH
6729: PPUSH
6730: PPUSH
6731: PPUSH
6732: PPUSH
6733: PPUSH
6734: PPUSH
6735: PPUSH
// sci_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] , [ f_nation , 2 ] , [ f_lives , 251 ] ] ) ;
6736: LD_ADDR_VAR 0 6
6740: PUSH
6741: LD_INT 22
6743: PUSH
6744: LD_VAR 0 1
6748: PUSH
6749: EMPTY
6750: LIST
6751: LIST
6752: PUSH
6753: LD_INT 25
6755: PUSH
6756: LD_INT 4
6758: PUSH
6759: EMPTY
6760: LIST
6761: LIST
6762: PUSH
6763: LD_INT 23
6765: PUSH
6766: LD_INT 2
6768: PUSH
6769: EMPTY
6770: LIST
6771: LIST
6772: PUSH
6773: LD_INT 24
6775: PUSH
6776: LD_INT 251
6778: PUSH
6779: EMPTY
6780: LIST
6781: LIST
6782: PUSH
6783: EMPTY
6784: LIST
6785: LIST
6786: LIST
6787: LIST
6788: PPUSH
6789: CALL_OW 69
6793: ST_TO_ADDR
// sci_listOutside = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_nation , 2 ] , [ f_class , 4 ] , [ f_ok ] ] ) ;
6794: LD_ADDR_VAR 0 7
6798: PUSH
6799: LD_VAR 0 3
6803: PPUSH
6804: LD_INT 22
6806: PUSH
6807: LD_VAR 0 1
6811: PUSH
6812: EMPTY
6813: LIST
6814: LIST
6815: PUSH
6816: LD_INT 23
6818: PUSH
6819: LD_INT 2
6821: PUSH
6822: EMPTY
6823: LIST
6824: LIST
6825: PUSH
6826: LD_INT 25
6828: PUSH
6829: LD_INT 4
6831: PUSH
6832: EMPTY
6833: LIST
6834: LIST
6835: PUSH
6836: LD_INT 50
6838: PUSH
6839: EMPTY
6840: LIST
6841: PUSH
6842: EMPTY
6843: LIST
6844: LIST
6845: LIST
6846: LIST
6847: PPUSH
6848: CALL_OW 70
6852: ST_TO_ADDR
// damageUnits = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 750 ] ] ] ) ;
6853: LD_ADDR_VAR 0 10
6857: PUSH
6858: LD_VAR 0 3
6862: PPUSH
6863: LD_INT 22
6865: PUSH
6866: LD_VAR 0 1
6870: PUSH
6871: EMPTY
6872: LIST
6873: LIST
6874: PUSH
6875: LD_INT 21
6877: PUSH
6878: LD_INT 1
6880: PUSH
6881: EMPTY
6882: LIST
6883: LIST
6884: PUSH
6885: LD_INT 3
6887: PUSH
6888: LD_INT 25
6890: PUSH
6891: LD_INT 3
6893: PUSH
6894: EMPTY
6895: LIST
6896: LIST
6897: PUSH
6898: EMPTY
6899: LIST
6900: LIST
6901: PUSH
6902: LD_INT 3
6904: PUSH
6905: LD_INT 24
6907: PUSH
6908: LD_INT 750
6910: PUSH
6911: EMPTY
6912: LIST
6913: LIST
6914: PUSH
6915: EMPTY
6916: LIST
6917: LIST
6918: PUSH
6919: EMPTY
6920: LIST
6921: LIST
6922: LIST
6923: LIST
6924: PPUSH
6925: CALL_OW 70
6929: ST_TO_ADDR
// unitsToHeal = FilterUnitsInArea ( healArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
6930: LD_ADDR_VAR 0 11
6934: PUSH
6935: LD_VAR 0 2
6939: PPUSH
6940: LD_INT 22
6942: PUSH
6943: LD_VAR 0 1
6947: PUSH
6948: EMPTY
6949: LIST
6950: LIST
6951: PUSH
6952: LD_INT 21
6954: PUSH
6955: LD_INT 1
6957: PUSH
6958: EMPTY
6959: LIST
6960: LIST
6961: PUSH
6962: LD_INT 3
6964: PUSH
6965: LD_INT 25
6967: PUSH
6968: LD_INT 3
6970: PUSH
6971: EMPTY
6972: LIST
6973: LIST
6974: PUSH
6975: EMPTY
6976: LIST
6977: LIST
6978: PUSH
6979: LD_INT 3
6981: PUSH
6982: LD_INT 24
6984: PUSH
6985: LD_INT 1000
6987: PUSH
6988: EMPTY
6989: LIST
6990: LIST
6991: PUSH
6992: EMPTY
6993: LIST
6994: LIST
6995: PUSH
6996: EMPTY
6997: LIST
6998: LIST
6999: LIST
7000: LIST
7001: PPUSH
7002: CALL_OW 70
7006: ST_TO_ADDR
// if not damageUnits and not unitsToHeal and not sci_list then
7007: LD_VAR 0 10
7011: NOT
7012: PUSH
7013: LD_VAR 0 11
7017: NOT
7018: AND
7019: PUSH
7020: LD_VAR 0 6
7024: NOT
7025: AND
7026: IFFALSE 7030
// exit ;
7028: GO 7264
// if damageUnits > 0 and sci_list > 0 then
7030: LD_VAR 0 10
7034: PUSH
7035: LD_INT 0
7037: GREATER
7038: PUSH
7039: LD_VAR 0 6
7043: PUSH
7044: LD_INT 0
7046: GREATER
7047: AND
7048: IFFALSE 7064
// ComMoveToArea ( damageUnits , healArea ) ;
7050: LD_VAR 0 10
7054: PPUSH
7055: LD_VAR 0 2
7059: PPUSH
7060: CALL_OW 113
// if unitsToHeal > 0 and sci_list > 0 then
7064: LD_VAR 0 11
7068: PUSH
7069: LD_INT 0
7071: GREATER
7072: PUSH
7073: LD_VAR 0 6
7077: PUSH
7078: LD_INT 0
7080: GREATER
7081: AND
7082: IFFALSE 7093
// ComExitBuilding ( sci_list ) ;
7084: LD_VAR 0 6
7088: PPUSH
7089: CALL_OW 122
// if unitsToHeal > 0 and sci_listOutside > 0 then
7093: LD_VAR 0 11
7097: PUSH
7098: LD_INT 0
7100: GREATER
7101: PUSH
7102: LD_VAR 0 7
7106: PUSH
7107: LD_INT 0
7109: GREATER
7110: AND
7111: IFFALSE 7131
// ComHeal ( sci_listOutside , unitsToHeal [ 1 ] ) ;
7113: LD_VAR 0 7
7117: PPUSH
7118: LD_VAR 0 11
7122: PUSH
7123: LD_INT 1
7125: ARRAY
7126: PPUSH
7127: CALL_OW 128
// if damageUnits = 0 and unitsToHeal = 0 and sci_listOutside > 0 then
7131: LD_VAR 0 10
7135: PUSH
7136: LD_INT 0
7138: EQUAL
7139: PUSH
7140: LD_VAR 0 11
7144: PUSH
7145: LD_INT 0
7147: EQUAL
7148: AND
7149: PUSH
7150: LD_VAR 0 7
7154: PUSH
7155: LD_INT 0
7157: GREATER
7158: AND
7159: IFFALSE 7264
// begin tmp = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_building ] , [ f_btype , b_lab_full ] ] ) ;
7161: LD_ADDR_VAR 0 12
7165: PUSH
7166: LD_INT 22
7168: PUSH
7169: LD_VAR 0 1
7173: PUSH
7174: EMPTY
7175: LIST
7176: LIST
7177: PUSH
7178: LD_INT 21
7180: PUSH
7181: LD_INT 3
7183: PUSH
7184: EMPTY
7185: LIST
7186: LIST
7187: PUSH
7188: LD_INT 30
7190: PUSH
7191: LD_INT 8
7193: PUSH
7194: EMPTY
7195: LIST
7196: LIST
7197: PUSH
7198: EMPTY
7199: LIST
7200: LIST
7201: LIST
7202: PPUSH
7203: CALL_OW 69
7207: ST_TO_ADDR
// rnd = rand ( 1 , tmp ) ;
7208: LD_ADDR_VAR 0 13
7212: PUSH
7213: LD_INT 1
7215: PPUSH
7216: LD_VAR 0 12
7220: PPUSH
7221: CALL_OW 12
7225: ST_TO_ADDR
// ComEnterUnit ( UnitFilter ( sci_listOutside , [ f_not , [ f_hastask ] ] ) , tmp [ rnd ] ) ;
7226: LD_VAR 0 7
7230: PPUSH
7231: LD_INT 3
7233: PUSH
7234: LD_INT 60
7236: PUSH
7237: EMPTY
7238: LIST
7239: PUSH
7240: EMPTY
7241: LIST
7242: LIST
7243: PPUSH
7244: CALL_OW 72
7248: PPUSH
7249: LD_VAR 0 12
7253: PUSH
7254: LD_VAR 0 13
7258: ARRAY
7259: PPUSH
7260: CALL_OW 120
// end ; end ;
7264: LD_VAR 0 5
7268: RET
// export function BuildingVehicleEnemy ( fabric , vehCount , weaponTab , engine , control , chassis ) ; var i , weapon ; begin
7269: LD_INT 0
7271: PPUSH
7272: PPUSH
7273: PPUSH
// for i = 1 to vehCount do
7274: LD_ADDR_VAR 0 8
7278: PUSH
7279: DOUBLE
7280: LD_INT 1
7282: DEC
7283: ST_TO_ADDR
7284: LD_VAR 0 2
7288: PUSH
7289: FOR_TO
7290: IFFALSE 7337
// AddComConstruct ( fabric , chassis , engine , control , weaponTab [ Rand ( 1 , weaponTab ) ] ) ;
7292: LD_VAR 0 1
7296: PPUSH
7297: LD_VAR 0 6
7301: PPUSH
7302: LD_VAR 0 4
7306: PPUSH
7307: LD_VAR 0 5
7311: PPUSH
7312: LD_VAR 0 3
7316: PUSH
7317: LD_INT 1
7319: PPUSH
7320: LD_VAR 0 3
7324: PPUSH
7325: CALL_OW 12
7329: ARRAY
7330: PPUSH
7331: CALL_OW 185
7335: GO 7289
7337: POP
7338: POP
// end ;
7339: LD_VAR 0 7
7343: RET
// export function EnemyVehicleAttack ( side ) ; var i , tmp , target1 , target2 ; begin
7344: LD_INT 0
7346: PPUSH
7347: PPUSH
7348: PPUSH
7349: PPUSH
7350: PPUSH
// repeat wait ( 0 0$1 ) ;
7351: LD_INT 35
7353: PPUSH
7354: CALL_OW 67
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_or , [ f_weapon , 27 ] , [ f_weapon , 28 ] , [ f_weapon , 29 ] ] ] ) > 0 then
7358: LD_INT 22
7360: PUSH
7361: LD_VAR 0 1
7365: PUSH
7366: EMPTY
7367: LIST
7368: LIST
7369: PUSH
7370: LD_INT 21
7372: PUSH
7373: LD_INT 2
7375: PUSH
7376: EMPTY
7377: LIST
7378: LIST
7379: PUSH
7380: LD_INT 2
7382: PUSH
7383: LD_INT 34
7385: PUSH
7386: LD_INT 27
7388: PUSH
7389: EMPTY
7390: LIST
7391: LIST
7392: PUSH
7393: LD_INT 34
7395: PUSH
7396: LD_INT 28
7398: PUSH
7399: EMPTY
7400: LIST
7401: LIST
7402: PUSH
7403: LD_INT 34
7405: PUSH
7406: LD_INT 29
7408: PUSH
7409: EMPTY
7410: LIST
7411: LIST
7412: PUSH
7413: EMPTY
7414: LIST
7415: LIST
7416: LIST
7417: LIST
7418: PUSH
7419: EMPTY
7420: LIST
7421: LIST
7422: LIST
7423: PPUSH
7424: CALL_OW 69
7428: PUSH
7429: LD_INT 0
7431: GREATER
7432: IFFALSE 7696
// begin for i in FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_or , [ f_weapon , 27 ] , [ f_weapon , 28 ] , [ f_weapon , 29 ] ] ] ) do
7434: LD_ADDR_VAR 0 3
7438: PUSH
7439: LD_INT 22
7441: PUSH
7442: LD_VAR 0 1
7446: PUSH
7447: EMPTY
7448: LIST
7449: LIST
7450: PUSH
7451: LD_INT 21
7453: PUSH
7454: LD_INT 2
7456: PUSH
7457: EMPTY
7458: LIST
7459: LIST
7460: PUSH
7461: LD_INT 2
7463: PUSH
7464: LD_INT 34
7466: PUSH
7467: LD_INT 27
7469: PUSH
7470: EMPTY
7471: LIST
7472: LIST
7473: PUSH
7474: LD_INT 34
7476: PUSH
7477: LD_INT 28
7479: PUSH
7480: EMPTY
7481: LIST
7482: LIST
7483: PUSH
7484: LD_INT 34
7486: PUSH
7487: LD_INT 29
7489: PUSH
7490: EMPTY
7491: LIST
7492: LIST
7493: PUSH
7494: EMPTY
7495: LIST
7496: LIST
7497: LIST
7498: LIST
7499: PUSH
7500: EMPTY
7501: LIST
7502: LIST
7503: LIST
7504: PPUSH
7505: CALL_OW 69
7509: PUSH
7510: FOR_IN
7511: IFFALSE 7694
// begin wait ( 0 0$1 ) ;
7513: LD_INT 35
7515: PPUSH
7516: CALL_OW 67
// target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
7520: LD_ADDR_VAR 0 5
7524: PUSH
7525: LD_INT 81
7527: PUSH
7528: LD_VAR 0 1
7532: PUSH
7533: EMPTY
7534: LIST
7535: LIST
7536: PPUSH
7537: CALL_OW 69
7541: PPUSH
7542: LD_VAR 0 3
7546: PPUSH
7547: CALL_OW 74
7551: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
7552: LD_ADDR_VAR 0 6
7556: PUSH
7557: LD_INT 81
7559: PUSH
7560: LD_VAR 0 1
7564: PUSH
7565: EMPTY
7566: LIST
7567: LIST
7568: PUSH
7569: LD_INT 2
7571: PUSH
7572: LD_INT 59
7574: PUSH
7575: EMPTY
7576: LIST
7577: PUSH
7578: LD_INT 21
7580: PUSH
7581: LD_INT 1
7583: PUSH
7584: EMPTY
7585: LIST
7586: LIST
7587: PUSH
7588: LD_INT 21
7590: PUSH
7591: LD_INT 2
7593: PUSH
7594: EMPTY
7595: LIST
7596: LIST
7597: PUSH
7598: EMPTY
7599: LIST
7600: LIST
7601: LIST
7602: LIST
7603: PUSH
7604: EMPTY
7605: LIST
7606: LIST
7607: PUSH
7608: EMPTY
7609: LIST
7610: PPUSH
7611: CALL_OW 69
7615: PPUSH
7616: LD_VAR 0 3
7620: PPUSH
7621: CALL_OW 74
7625: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
7626: LD_VAR 0 3
7630: PPUSH
7631: LD_VAR 0 5
7635: PPUSH
7636: CALL_OW 296
7640: PUSH
7641: LD_INT 8
7643: PLUS
7644: PUSH
7645: LD_VAR 0 3
7649: PPUSH
7650: LD_VAR 0 6
7654: PPUSH
7655: CALL_OW 296
7659: LESS
7660: IFFALSE 7678
// begin ComAttackUnit ( i , target1 ) ;
7662: LD_VAR 0 3
7666: PPUSH
7667: LD_VAR 0 5
7671: PPUSH
7672: CALL_OW 115
// end else
7676: GO 7692
// begin ComAttackUnit ( i , target2 ) ;
7678: LD_VAR 0 3
7682: PPUSH
7683: LD_VAR 0 6
7687: PPUSH
7688: CALL_OW 115
// end ; end ;
7692: GO 7510
7694: POP
7695: POP
// end ; until FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_or , [ f_weapon , 27 ] , [ f_weapon , 28 ] , [ f_weapon , 29 ] ] ] ) = 0 ;
7696: LD_INT 22
7698: PUSH
7699: LD_VAR 0 1
7703: PUSH
7704: EMPTY
7705: LIST
7706: LIST
7707: PUSH
7708: LD_INT 21
7710: PUSH
7711: LD_INT 2
7713: PUSH
7714: EMPTY
7715: LIST
7716: LIST
7717: PUSH
7718: LD_INT 2
7720: PUSH
7721: LD_INT 34
7723: PUSH
7724: LD_INT 27
7726: PUSH
7727: EMPTY
7728: LIST
7729: LIST
7730: PUSH
7731: LD_INT 34
7733: PUSH
7734: LD_INT 28
7736: PUSH
7737: EMPTY
7738: LIST
7739: LIST
7740: PUSH
7741: LD_INT 34
7743: PUSH
7744: LD_INT 29
7746: PUSH
7747: EMPTY
7748: LIST
7749: LIST
7750: PUSH
7751: EMPTY
7752: LIST
7753: LIST
7754: LIST
7755: LIST
7756: PUSH
7757: EMPTY
7758: LIST
7759: LIST
7760: LIST
7761: PPUSH
7762: CALL_OW 69
7766: PUSH
7767: LD_INT 0
7769: EQUAL
7770: IFFALSE 7351
// end ;
7772: LD_VAR 0 2
7776: RET
// export function RespawnAttackVehicle ( area , side , vehCount , mehskill , nation , vehEngine , vehControl , RUWeapons , ARWeapons , AMWeapon , targetSide ) ; var i , j , un , veh , ruChassisTab , arChassisTab , amChassisTab , vehicleOK_list , target1 , target2 ; begin
7777: LD_INT 0
7779: PPUSH
7780: PPUSH
7781: PPUSH
7782: PPUSH
7783: PPUSH
7784: PPUSH
7785: PPUSH
7786: PPUSH
7787: PPUSH
7788: PPUSH
7789: PPUSH
// amChassisTab = [ ] ;
7790: LD_ADDR_VAR 0 19
7794: PUSH
7795: EMPTY
7796: ST_TO_ADDR
// arChassisTab = [ ] ;
7797: LD_ADDR_VAR 0 18
7801: PUSH
7802: EMPTY
7803: ST_TO_ADDR
// ruChassisTab = [ ] ;
7804: LD_ADDR_VAR 0 17
7808: PUSH
7809: EMPTY
7810: ST_TO_ADDR
// repeat wait ( 0 0$01 ) ;
7811: LD_INT 35
7813: PPUSH
7814: CALL_OW 67
// if nation = 1 then
7818: LD_VAR 0 5
7822: PUSH
7823: LD_INT 1
7825: EQUAL
7826: IFFALSE 8328
// begin uc_side = side ;
7828: LD_ADDR_OWVAR 20
7832: PUSH
7833: LD_VAR 0 2
7837: ST_TO_ADDR
// uc_nation = nation ;
7838: LD_ADDR_OWVAR 21
7842: PUSH
7843: LD_VAR 0 5
7847: ST_TO_ADDR
// vc_engine = vehengine ;
7848: LD_ADDR_OWVAR 39
7852: PUSH
7853: LD_VAR 0 6
7857: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
7858: LD_ADDR_OWVAR 38
7862: PUSH
7863: LD_VAR 0 7
7867: PUSH
7868: LD_INT 1
7870: PPUSH
7871: LD_VAR 0 7
7875: PPUSH
7876: CALL_OW 12
7880: ARRAY
7881: ST_TO_ADDR
// vc_weapon = AMWeapon [ Rand ( 1 , AMWeapon ) ] ;
7882: LD_ADDR_OWVAR 40
7886: PUSH
7887: LD_VAR 0 10
7891: PUSH
7892: LD_INT 1
7894: PPUSH
7895: LD_VAR 0 10
7899: PPUSH
7900: CALL_OW 12
7904: ARRAY
7905: ST_TO_ADDR
// if vc_weapon = 2 or vc_weapon = 3 then
7906: LD_OWVAR 40
7910: PUSH
7911: LD_INT 2
7913: EQUAL
7914: PUSH
7915: LD_OWVAR 40
7919: PUSH
7920: LD_INT 3
7922: EQUAL
7923: OR
7924: IFFALSE 7977
// begin amChassisTab = [ 1 , 2 , 3 , 4 , 5 ] ;
7926: LD_ADDR_VAR 0 19
7930: PUSH
7931: LD_INT 1
7933: PUSH
7934: LD_INT 2
7936: PUSH
7937: LD_INT 3
7939: PUSH
7940: LD_INT 4
7942: PUSH
7943: LD_INT 5
7945: PUSH
7946: EMPTY
7947: LIST
7948: LIST
7949: LIST
7950: LIST
7951: LIST
7952: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7953: LD_ADDR_OWVAR 37
7957: PUSH
7958: LD_VAR 0 19
7962: PUSH
7963: LD_INT 1
7965: PPUSH
7966: LD_VAR 0 19
7970: PPUSH
7971: CALL_OW 12
7975: ARRAY
7976: ST_TO_ADDR
// end ; if vc_weapon = 4 or vc_weapon = 5 or vc_weapon = 9 or vc_weapon = 11 or vc_weapon = 7 then
7977: LD_OWVAR 40
7981: PUSH
7982: LD_INT 4
7984: EQUAL
7985: PUSH
7986: LD_OWVAR 40
7990: PUSH
7991: LD_INT 5
7993: EQUAL
7994: OR
7995: PUSH
7996: LD_OWVAR 40
8000: PUSH
8001: LD_INT 9
8003: EQUAL
8004: OR
8005: PUSH
8006: LD_OWVAR 40
8010: PUSH
8011: LD_INT 11
8013: EQUAL
8014: OR
8015: PUSH
8016: LD_OWVAR 40
8020: PUSH
8021: LD_INT 7
8023: EQUAL
8024: OR
8025: IFFALSE 8074
// begin amChassisTab = [ 2 , 3 , 4 , 5 ] ;
8027: LD_ADDR_VAR 0 19
8031: PUSH
8032: LD_INT 2
8034: PUSH
8035: LD_INT 3
8037: PUSH
8038: LD_INT 4
8040: PUSH
8041: LD_INT 5
8043: PUSH
8044: EMPTY
8045: LIST
8046: LIST
8047: LIST
8048: LIST
8049: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
8050: LD_ADDR_OWVAR 37
8054: PUSH
8055: LD_VAR 0 19
8059: PUSH
8060: LD_INT 1
8062: PPUSH
8063: LD_VAR 0 19
8067: PPUSH
8068: CALL_OW 12
8072: ARRAY
8073: ST_TO_ADDR
// end ; if vc_weapon = 8 or vc_weapon = 6 or vc_weapon = 10 then
8074: LD_OWVAR 40
8078: PUSH
8079: LD_INT 8
8081: EQUAL
8082: PUSH
8083: LD_OWVAR 40
8087: PUSH
8088: LD_INT 6
8090: EQUAL
8091: OR
8092: PUSH
8093: LD_OWVAR 40
8097: PUSH
8098: LD_INT 10
8100: EQUAL
8101: OR
8102: IFFALSE 8143
// begin amChassisTab = [ 4 , 5 ] ;
8104: LD_ADDR_VAR 0 19
8108: PUSH
8109: LD_INT 4
8111: PUSH
8112: LD_INT 5
8114: PUSH
8115: EMPTY
8116: LIST
8117: LIST
8118: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
8119: LD_ADDR_OWVAR 37
8123: PUSH
8124: LD_VAR 0 19
8128: PUSH
8129: LD_INT 1
8131: PPUSH
8132: LD_VAR 0 19
8136: PPUSH
8137: CALL_OW 12
8141: ARRAY
8142: ST_TO_ADDR
// end ; veh = CreateVehicle ;
8143: LD_ADDR_VAR 0 16
8147: PUSH
8148: CALL_OW 45
8152: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
8153: LD_VAR 0 16
8157: PPUSH
8158: LD_VAR 0 1
8162: PPUSH
8163: LD_INT 0
8165: PPUSH
8166: CALL_OW 49
// if vc_control = 1 then
8170: LD_OWVAR 38
8174: PUSH
8175: LD_INT 1
8177: EQUAL
8178: IFFALSE 8314
// begin hc_gallery =  ;
8180: LD_ADDR_OWVAR 33
8184: PUSH
8185: LD_STRING 
8187: ST_TO_ADDR
// hc_name =  ;
8188: LD_ADDR_OWVAR 26
8192: PUSH
8193: LD_STRING 
8195: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8196: LD_ADDR_OWVAR 29
8200: PUSH
8201: LD_INT 9
8203: PPUSH
8204: LD_INT 11
8206: PPUSH
8207: CALL_OW 12
8211: PUSH
8212: LD_INT 10
8214: PPUSH
8215: LD_INT 12
8217: PPUSH
8218: CALL_OW 12
8222: PUSH
8223: EMPTY
8224: LIST
8225: LIST
8226: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8227: LD_ADDR_OWVAR 31
8231: PUSH
8232: LD_VAR 0 4
8236: PUSH
8237: LD_VAR 0 4
8241: PUSH
8242: LD_VAR 0 4
8246: PUSH
8247: LD_VAR 0 4
8251: PUSH
8252: EMPTY
8253: LIST
8254: LIST
8255: LIST
8256: LIST
8257: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8258: LD_ADDR_OWVAR 27
8262: PUSH
8263: LD_INT 1
8265: PPUSH
8266: LD_INT 2
8268: PPUSH
8269: CALL_OW 12
8273: ST_TO_ADDR
// hc_class = 3 ;
8274: LD_ADDR_OWVAR 28
8278: PUSH
8279: LD_INT 3
8281: ST_TO_ADDR
// hc_importance = 0 ;
8282: LD_ADDR_OWVAR 32
8286: PUSH
8287: LD_INT 0
8289: ST_TO_ADDR
// un = CreateHuman ;
8290: LD_ADDR_VAR 0 15
8294: PUSH
8295: CALL_OW 44
8299: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8300: LD_VAR 0 15
8304: PPUSH
8305: LD_VAR 0 16
8309: PPUSH
8310: CALL_OW 52
// end ; i = i + 1 ;
8314: LD_ADDR_VAR 0 13
8318: PUSH
8319: LD_VAR 0 13
8323: PUSH
8324: LD_INT 1
8326: PLUS
8327: ST_TO_ADDR
// end ; if nation = 2 then
8328: LD_VAR 0 5
8332: PUSH
8333: LD_INT 2
8335: EQUAL
8336: IFFALSE 8761
// begin uc_side = side ;
8338: LD_ADDR_OWVAR 20
8342: PUSH
8343: LD_VAR 0 2
8347: ST_TO_ADDR
// uc_nation = nation ;
8348: LD_ADDR_OWVAR 21
8352: PUSH
8353: LD_VAR 0 5
8357: ST_TO_ADDR
// vc_engine = vehengine ;
8358: LD_ADDR_OWVAR 39
8362: PUSH
8363: LD_VAR 0 6
8367: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
8368: LD_ADDR_OWVAR 38
8372: PUSH
8373: LD_VAR 0 7
8377: PUSH
8378: LD_INT 1
8380: PPUSH
8381: LD_VAR 0 7
8385: PPUSH
8386: CALL_OW 12
8390: ARRAY
8391: ST_TO_ADDR
// vc_weapon = ARWeapons [ Rand ( 1 , ARWeapons ) ] ;
8392: LD_ADDR_OWVAR 40
8396: PUSH
8397: LD_VAR 0 9
8401: PUSH
8402: LD_INT 1
8404: PPUSH
8405: LD_VAR 0 9
8409: PPUSH
8410: CALL_OW 12
8414: ARRAY
8415: ST_TO_ADDR
// if vc_weapon = 24 or vc_weapon = 22 or vc_weapon = 23 or vc_weapon = 30 then
8416: LD_OWVAR 40
8420: PUSH
8421: LD_INT 24
8423: EQUAL
8424: PUSH
8425: LD_OWVAR 40
8429: PUSH
8430: LD_INT 22
8432: EQUAL
8433: OR
8434: PUSH
8435: LD_OWVAR 40
8439: PUSH
8440: LD_INT 23
8442: EQUAL
8443: OR
8444: PUSH
8445: LD_OWVAR 40
8449: PUSH
8450: LD_INT 30
8452: EQUAL
8453: OR
8454: IFFALSE 8491
// begin arChassisTab = [ 14 ] ;
8456: LD_ADDR_VAR 0 18
8460: PUSH
8461: LD_INT 14
8463: PUSH
8464: EMPTY
8465: LIST
8466: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
8467: LD_ADDR_OWVAR 37
8471: PUSH
8472: LD_VAR 0 18
8476: PUSH
8477: LD_INT 1
8479: PPUSH
8480: LD_VAR 0 18
8484: PPUSH
8485: CALL_OW 12
8489: ARRAY
8490: ST_TO_ADDR
// end ; if vc_weapon = 29 or vc_weapon = 28 or vc_weapon = 27 or vc_weapon = 26 or vc_weapon = 25 then
8491: LD_OWVAR 40
8495: PUSH
8496: LD_INT 29
8498: EQUAL
8499: PUSH
8500: LD_OWVAR 40
8504: PUSH
8505: LD_INT 28
8507: EQUAL
8508: OR
8509: PUSH
8510: LD_OWVAR 40
8514: PUSH
8515: LD_INT 27
8517: EQUAL
8518: OR
8519: PUSH
8520: LD_OWVAR 40
8524: PUSH
8525: LD_INT 26
8527: EQUAL
8528: OR
8529: PUSH
8530: LD_OWVAR 40
8534: PUSH
8535: LD_INT 25
8537: EQUAL
8538: OR
8539: IFFALSE 8576
// begin arChassisTab = [ 14 ] ;
8541: LD_ADDR_VAR 0 18
8545: PUSH
8546: LD_INT 14
8548: PUSH
8549: EMPTY
8550: LIST
8551: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
8552: LD_ADDR_OWVAR 37
8556: PUSH
8557: LD_VAR 0 18
8561: PUSH
8562: LD_INT 1
8564: PPUSH
8565: LD_VAR 0 18
8569: PPUSH
8570: CALL_OW 12
8574: ARRAY
8575: ST_TO_ADDR
// end ; veh = CreateVehicle ;
8576: LD_ADDR_VAR 0 16
8580: PUSH
8581: CALL_OW 45
8585: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
8586: LD_VAR 0 16
8590: PPUSH
8591: LD_VAR 0 1
8595: PPUSH
8596: LD_INT 0
8598: PPUSH
8599: CALL_OW 49
// if vc_control = 1 then
8603: LD_OWVAR 38
8607: PUSH
8608: LD_INT 1
8610: EQUAL
8611: IFFALSE 8747
// begin hc_gallery =  ;
8613: LD_ADDR_OWVAR 33
8617: PUSH
8618: LD_STRING 
8620: ST_TO_ADDR
// hc_name =  ;
8621: LD_ADDR_OWVAR 26
8625: PUSH
8626: LD_STRING 
8628: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8629: LD_ADDR_OWVAR 29
8633: PUSH
8634: LD_INT 9
8636: PPUSH
8637: LD_INT 11
8639: PPUSH
8640: CALL_OW 12
8644: PUSH
8645: LD_INT 10
8647: PPUSH
8648: LD_INT 12
8650: PPUSH
8651: CALL_OW 12
8655: PUSH
8656: EMPTY
8657: LIST
8658: LIST
8659: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8660: LD_ADDR_OWVAR 31
8664: PUSH
8665: LD_VAR 0 4
8669: PUSH
8670: LD_VAR 0 4
8674: PUSH
8675: LD_VAR 0 4
8679: PUSH
8680: LD_VAR 0 4
8684: PUSH
8685: EMPTY
8686: LIST
8687: LIST
8688: LIST
8689: LIST
8690: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8691: LD_ADDR_OWVAR 27
8695: PUSH
8696: LD_INT 1
8698: PPUSH
8699: LD_INT 2
8701: PPUSH
8702: CALL_OW 12
8706: ST_TO_ADDR
// hc_class = 3 ;
8707: LD_ADDR_OWVAR 28
8711: PUSH
8712: LD_INT 3
8714: ST_TO_ADDR
// hc_importance = 0 ;
8715: LD_ADDR_OWVAR 32
8719: PUSH
8720: LD_INT 0
8722: ST_TO_ADDR
// un = CreateHuman ;
8723: LD_ADDR_VAR 0 15
8727: PUSH
8728: CALL_OW 44
8732: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8733: LD_VAR 0 15
8737: PPUSH
8738: LD_VAR 0 16
8742: PPUSH
8743: CALL_OW 52
// end ; i = i + 1 ;
8747: LD_ADDR_VAR 0 13
8751: PUSH
8752: LD_VAR 0 13
8756: PUSH
8757: LD_INT 1
8759: PLUS
8760: ST_TO_ADDR
// end ; if nation = 3 then
8761: LD_VAR 0 5
8765: PUSH
8766: LD_INT 3
8768: EQUAL
8769: IFFALSE 9190
// begin uc_side = side ;
8771: LD_ADDR_OWVAR 20
8775: PUSH
8776: LD_VAR 0 2
8780: ST_TO_ADDR
// uc_nation = nation ;
8781: LD_ADDR_OWVAR 21
8785: PUSH
8786: LD_VAR 0 5
8790: ST_TO_ADDR
// vc_engine = vehengine ;
8791: LD_ADDR_OWVAR 39
8795: PUSH
8796: LD_VAR 0 6
8800: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
8801: LD_ADDR_OWVAR 38
8805: PUSH
8806: LD_VAR 0 7
8810: PUSH
8811: LD_INT 1
8813: PPUSH
8814: LD_VAR 0 7
8818: PPUSH
8819: CALL_OW 12
8823: ARRAY
8824: ST_TO_ADDR
// vc_weapon = RUWeapons [ Rand ( 1 , RUWeapons ) ] ;
8825: LD_ADDR_OWVAR 40
8829: PUSH
8830: LD_VAR 0 8
8834: PUSH
8835: LD_INT 1
8837: PPUSH
8838: LD_VAR 0 8
8842: PPUSH
8843: CALL_OW 12
8847: ARRAY
8848: ST_TO_ADDR
// if vc_weapon = 42 or vc_weapon = 43 or vc_weapon = 44 or vc_weapon = 45 or vc_weapon = 49 then
8849: LD_OWVAR 40
8853: PUSH
8854: LD_INT 42
8856: EQUAL
8857: PUSH
8858: LD_OWVAR 40
8862: PUSH
8863: LD_INT 43
8865: EQUAL
8866: OR
8867: PUSH
8868: LD_OWVAR 40
8872: PUSH
8873: LD_INT 44
8875: EQUAL
8876: OR
8877: PUSH
8878: LD_OWVAR 40
8882: PUSH
8883: LD_INT 45
8885: EQUAL
8886: OR
8887: PUSH
8888: LD_OWVAR 40
8892: PUSH
8893: LD_INT 49
8895: EQUAL
8896: OR
8897: IFFALSE 8946
// begin ruChassisTab = [ 21 , 22 , 23 , 24 ] ;
8899: LD_ADDR_VAR 0 17
8903: PUSH
8904: LD_INT 21
8906: PUSH
8907: LD_INT 22
8909: PUSH
8910: LD_INT 23
8912: PUSH
8913: LD_INT 24
8915: PUSH
8916: EMPTY
8917: LIST
8918: LIST
8919: LIST
8920: LIST
8921: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8922: LD_ADDR_OWVAR 37
8926: PUSH
8927: LD_VAR 0 17
8931: PUSH
8932: LD_INT 1
8934: PPUSH
8935: LD_VAR 0 17
8939: PPUSH
8940: CALL_OW 12
8944: ARRAY
8945: ST_TO_ADDR
// end ; if vc_weapon = 46 or vc_weapon = 47 then
8946: LD_OWVAR 40
8950: PUSH
8951: LD_INT 46
8953: EQUAL
8954: PUSH
8955: LD_OWVAR 40
8959: PUSH
8960: LD_INT 47
8962: EQUAL
8963: OR
8964: IFFALSE 9005
// begin ruChassisTab = [ 23 , 24 ] ;
8966: LD_ADDR_VAR 0 17
8970: PUSH
8971: LD_INT 23
8973: PUSH
8974: LD_INT 24
8976: PUSH
8977: EMPTY
8978: LIST
8979: LIST
8980: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8981: LD_ADDR_OWVAR 37
8985: PUSH
8986: LD_VAR 0 17
8990: PUSH
8991: LD_INT 1
8993: PPUSH
8994: LD_VAR 0 17
8998: PPUSH
8999: CALL_OW 12
9003: ARRAY
9004: ST_TO_ADDR
// end ; veh = CreateVehicle ;
9005: LD_ADDR_VAR 0 16
9009: PUSH
9010: CALL_OW 45
9014: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
9015: LD_VAR 0 16
9019: PPUSH
9020: LD_VAR 0 1
9024: PPUSH
9025: LD_INT 0
9027: PPUSH
9028: CALL_OW 49
// if vc_control = 1 then
9032: LD_OWVAR 38
9036: PUSH
9037: LD_INT 1
9039: EQUAL
9040: IFFALSE 9176
// begin hc_gallery =  ;
9042: LD_ADDR_OWVAR 33
9046: PUSH
9047: LD_STRING 
9049: ST_TO_ADDR
// hc_name =  ;
9050: LD_ADDR_OWVAR 26
9054: PUSH
9055: LD_STRING 
9057: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9058: LD_ADDR_OWVAR 29
9062: PUSH
9063: LD_INT 9
9065: PPUSH
9066: LD_INT 11
9068: PPUSH
9069: CALL_OW 12
9073: PUSH
9074: LD_INT 10
9076: PPUSH
9077: LD_INT 12
9079: PPUSH
9080: CALL_OW 12
9084: PUSH
9085: EMPTY
9086: LIST
9087: LIST
9088: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
9089: LD_ADDR_OWVAR 31
9093: PUSH
9094: LD_VAR 0 4
9098: PUSH
9099: LD_VAR 0 4
9103: PUSH
9104: LD_VAR 0 4
9108: PUSH
9109: LD_VAR 0 4
9113: PUSH
9114: EMPTY
9115: LIST
9116: LIST
9117: LIST
9118: LIST
9119: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9120: LD_ADDR_OWVAR 27
9124: PUSH
9125: LD_INT 1
9127: PPUSH
9128: LD_INT 2
9130: PPUSH
9131: CALL_OW 12
9135: ST_TO_ADDR
// hc_class = 3 ;
9136: LD_ADDR_OWVAR 28
9140: PUSH
9141: LD_INT 3
9143: ST_TO_ADDR
// hc_importance = 0 ;
9144: LD_ADDR_OWVAR 32
9148: PUSH
9149: LD_INT 0
9151: ST_TO_ADDR
// un = CreateHuman ;
9152: LD_ADDR_VAR 0 15
9156: PUSH
9157: CALL_OW 44
9161: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
9162: LD_VAR 0 15
9166: PPUSH
9167: LD_VAR 0 16
9171: PPUSH
9172: CALL_OW 52
// end ; i = i + 1 ;
9176: LD_ADDR_VAR 0 13
9180: PUSH
9181: LD_VAR 0 13
9185: PUSH
9186: LD_INT 1
9188: PLUS
9189: ST_TO_ADDR
// end ; until i = vehCount ;
9190: LD_VAR 0 13
9194: PUSH
9195: LD_VAR 0 3
9199: EQUAL
9200: IFFALSE 7811
// repeat wait ( 0 0$1 ) ;
9202: LD_INT 35
9204: PPUSH
9205: CALL_OW 67
// vehicleOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 650 ] ] ) ;
9209: LD_ADDR_VAR 0 20
9213: PUSH
9214: LD_INT 22
9216: PUSH
9217: LD_VAR 0 2
9221: PUSH
9222: EMPTY
9223: LIST
9224: LIST
9225: PUSH
9226: LD_INT 21
9228: PUSH
9229: LD_INT 2
9231: PUSH
9232: EMPTY
9233: LIST
9234: LIST
9235: PUSH
9236: LD_INT 24
9238: PUSH
9239: LD_INT 650
9241: PUSH
9242: EMPTY
9243: LIST
9244: LIST
9245: PUSH
9246: EMPTY
9247: LIST
9248: LIST
9249: LIST
9250: PPUSH
9251: CALL_OW 69
9255: ST_TO_ADDR
// if vehicleOK_list > 0 then
9256: LD_VAR 0 20
9260: PUSH
9261: LD_INT 0
9263: GREATER
9264: IFFALSE 9455
// begin for i in vehicleOK_list do
9266: LD_ADDR_VAR 0 13
9270: PUSH
9271: LD_VAR 0 20
9275: PUSH
9276: FOR_IN
9277: IFFALSE 9453
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
9279: LD_ADDR_VAR 0 21
9283: PUSH
9284: LD_INT 81
9286: PUSH
9287: LD_VAR 0 2
9291: PUSH
9292: EMPTY
9293: LIST
9294: LIST
9295: PPUSH
9296: CALL_OW 69
9300: PPUSH
9301: LD_VAR 0 13
9305: PPUSH
9306: CALL_OW 74
9310: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
9311: LD_ADDR_VAR 0 22
9315: PUSH
9316: LD_INT 81
9318: PUSH
9319: LD_VAR 0 2
9323: PUSH
9324: EMPTY
9325: LIST
9326: LIST
9327: PUSH
9328: LD_INT 2
9330: PUSH
9331: LD_INT 59
9333: PUSH
9334: EMPTY
9335: LIST
9336: PUSH
9337: LD_INT 21
9339: PUSH
9340: LD_INT 1
9342: PUSH
9343: EMPTY
9344: LIST
9345: LIST
9346: PUSH
9347: LD_INT 21
9349: PUSH
9350: LD_INT 2
9352: PUSH
9353: EMPTY
9354: LIST
9355: LIST
9356: PUSH
9357: EMPTY
9358: LIST
9359: LIST
9360: LIST
9361: LIST
9362: PUSH
9363: EMPTY
9364: LIST
9365: LIST
9366: PUSH
9367: EMPTY
9368: LIST
9369: PPUSH
9370: CALL_OW 69
9374: PPUSH
9375: LD_VAR 0 13
9379: PPUSH
9380: CALL_OW 74
9384: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
9385: LD_VAR 0 13
9389: PPUSH
9390: LD_VAR 0 21
9394: PPUSH
9395: CALL_OW 296
9399: PUSH
9400: LD_INT 8
9402: PLUS
9403: PUSH
9404: LD_VAR 0 13
9408: PPUSH
9409: LD_VAR 0 22
9413: PPUSH
9414: CALL_OW 296
9418: LESS
9419: IFFALSE 9437
// begin ComAttackUnit ( i , target1 ) ;
9421: LD_VAR 0 13
9425: PPUSH
9426: LD_VAR 0 21
9430: PPUSH
9431: CALL_OW 115
// end else
9435: GO 9451
// begin ComAttackUnit ( i , target2 ) ;
9437: LD_VAR 0 13
9441: PPUSH
9442: LD_VAR 0 22
9446: PPUSH
9447: CALL_OW 115
// end ; end ;
9451: GO 9276
9453: POP
9454: POP
// end ; until ( FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ) = 0 ;
9455: LD_INT 22
9457: PUSH
9458: LD_VAR 0 2
9462: PUSH
9463: EMPTY
9464: LIST
9465: LIST
9466: PUSH
9467: LD_INT 21
9469: PUSH
9470: LD_INT 2
9472: PUSH
9473: EMPTY
9474: LIST
9475: LIST
9476: PUSH
9477: EMPTY
9478: LIST
9479: LIST
9480: PPUSH
9481: CALL_OW 69
9485: PUSH
9486: LD_INT 0
9488: EQUAL
9489: IFFALSE 9202
// end ;
9491: LD_VAR 0 12
9495: RET
// export function RespawnAttackInfantry ( side , nation , soldierCount , sniperCount , bazookCount , mortalCount , medicCount , skil , spawnArea , healArea , targetSide ) ; var i , j , un , damageUnit_list , medic_list , soldiersOK_list , enemyUnits , und , target1 , target2 ; begin
9496: LD_INT 0
9498: PPUSH
9499: PPUSH
9500: PPUSH
9501: PPUSH
9502: PPUSH
9503: PPUSH
9504: PPUSH
9505: PPUSH
9506: PPUSH
9507: PPUSH
9508: PPUSH
// for i = 1 to soldierCount do
9509: LD_ADDR_VAR 0 13
9513: PUSH
9514: DOUBLE
9515: LD_INT 1
9517: DEC
9518: ST_TO_ADDR
9519: LD_VAR 0 3
9523: PUSH
9524: FOR_TO
9525: IFFALSE 9670
// begin uc_side = side ;
9527: LD_ADDR_OWVAR 20
9531: PUSH
9532: LD_VAR 0 1
9536: ST_TO_ADDR
// uc_nation = nation ;
9537: LD_ADDR_OWVAR 21
9541: PUSH
9542: LD_VAR 0 2
9546: ST_TO_ADDR
// hc_gallery =  ;
9547: LD_ADDR_OWVAR 33
9551: PUSH
9552: LD_STRING 
9554: ST_TO_ADDR
// hc_name =  ;
9555: LD_ADDR_OWVAR 26
9559: PUSH
9560: LD_STRING 
9562: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9563: LD_ADDR_OWVAR 29
9567: PUSH
9568: LD_INT 10
9570: PUSH
9571: LD_INT 10
9573: PUSH
9574: EMPTY
9575: LIST
9576: LIST
9577: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9578: LD_ADDR_OWVAR 31
9582: PUSH
9583: LD_VAR 0 8
9587: PUSH
9588: LD_VAR 0 8
9592: PUSH
9593: LD_VAR 0 8
9597: PUSH
9598: LD_VAR 0 8
9602: PUSH
9603: EMPTY
9604: LIST
9605: LIST
9606: LIST
9607: LIST
9608: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9609: LD_ADDR_OWVAR 27
9613: PUSH
9614: LD_INT 1
9616: PPUSH
9617: LD_INT 2
9619: PPUSH
9620: CALL_OW 12
9624: ST_TO_ADDR
// hc_class = 1 ;
9625: LD_ADDR_OWVAR 28
9629: PUSH
9630: LD_INT 1
9632: ST_TO_ADDR
// hc_importance = 0 ;
9633: LD_ADDR_OWVAR 32
9637: PUSH
9638: LD_INT 0
9640: ST_TO_ADDR
// un = CreateHuman ;
9641: LD_ADDR_VAR 0 15
9645: PUSH
9646: CALL_OW 44
9650: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9651: LD_VAR 0 15
9655: PPUSH
9656: LD_VAR 0 9
9660: PPUSH
9661: LD_INT 0
9663: PPUSH
9664: CALL_OW 49
// end ;
9668: GO 9524
9670: POP
9671: POP
// for i = 1 to sniperCount do
9672: LD_ADDR_VAR 0 13
9676: PUSH
9677: DOUBLE
9678: LD_INT 1
9680: DEC
9681: ST_TO_ADDR
9682: LD_VAR 0 4
9686: PUSH
9687: FOR_TO
9688: IFFALSE 9825
// begin uc_side = side ;
9690: LD_ADDR_OWVAR 20
9694: PUSH
9695: LD_VAR 0 1
9699: ST_TO_ADDR
// uc_nation = nation ;
9700: LD_ADDR_OWVAR 21
9704: PUSH
9705: LD_VAR 0 2
9709: ST_TO_ADDR
// hc_gallery =  ;
9710: LD_ADDR_OWVAR 33
9714: PUSH
9715: LD_STRING 
9717: ST_TO_ADDR
// hc_name =  ;
9718: LD_ADDR_OWVAR 26
9722: PUSH
9723: LD_STRING 
9725: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9726: LD_ADDR_OWVAR 29
9730: PUSH
9731: LD_INT 10
9733: PUSH
9734: LD_INT 10
9736: PUSH
9737: EMPTY
9738: LIST
9739: LIST
9740: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9741: LD_ADDR_OWVAR 31
9745: PUSH
9746: LD_VAR 0 8
9750: PUSH
9751: LD_VAR 0 8
9755: PUSH
9756: LD_VAR 0 8
9760: PUSH
9761: LD_VAR 0 8
9765: PUSH
9766: EMPTY
9767: LIST
9768: LIST
9769: LIST
9770: LIST
9771: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9772: LD_ADDR_OWVAR 27
9776: PUSH
9777: LD_INT 1
9779: PPUSH
9780: LD_INT 2
9782: PPUSH
9783: CALL_OW 12
9787: ST_TO_ADDR
// hc_class = 5 ;
9788: LD_ADDR_OWVAR 28
9792: PUSH
9793: LD_INT 5
9795: ST_TO_ADDR
// un = CreateHuman ;
9796: LD_ADDR_VAR 0 15
9800: PUSH
9801: CALL_OW 44
9805: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9806: LD_VAR 0 15
9810: PPUSH
9811: LD_VAR 0 9
9815: PPUSH
9816: LD_INT 0
9818: PPUSH
9819: CALL_OW 49
// end ;
9823: GO 9687
9825: POP
9826: POP
// for i = 1 to bazookCount do
9827: LD_ADDR_VAR 0 13
9831: PUSH
9832: DOUBLE
9833: LD_INT 1
9835: DEC
9836: ST_TO_ADDR
9837: LD_VAR 0 5
9841: PUSH
9842: FOR_TO
9843: IFFALSE 9988
// begin uc_side = side ;
9845: LD_ADDR_OWVAR 20
9849: PUSH
9850: LD_VAR 0 1
9854: ST_TO_ADDR
// uc_nation = nation ;
9855: LD_ADDR_OWVAR 21
9859: PUSH
9860: LD_VAR 0 2
9864: ST_TO_ADDR
// hc_gallery =  ;
9865: LD_ADDR_OWVAR 33
9869: PUSH
9870: LD_STRING 
9872: ST_TO_ADDR
// hc_name =  ;
9873: LD_ADDR_OWVAR 26
9877: PUSH
9878: LD_STRING 
9880: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9881: LD_ADDR_OWVAR 29
9885: PUSH
9886: LD_INT 10
9888: PUSH
9889: LD_INT 10
9891: PUSH
9892: EMPTY
9893: LIST
9894: LIST
9895: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9896: LD_ADDR_OWVAR 31
9900: PUSH
9901: LD_VAR 0 8
9905: PUSH
9906: LD_VAR 0 8
9910: PUSH
9911: LD_VAR 0 8
9915: PUSH
9916: LD_VAR 0 8
9920: PUSH
9921: EMPTY
9922: LIST
9923: LIST
9924: LIST
9925: LIST
9926: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9927: LD_ADDR_OWVAR 27
9931: PUSH
9932: LD_INT 1
9934: PPUSH
9935: LD_INT 2
9937: PPUSH
9938: CALL_OW 12
9942: ST_TO_ADDR
// hc_class = 9 ;
9943: LD_ADDR_OWVAR 28
9947: PUSH
9948: LD_INT 9
9950: ST_TO_ADDR
// hc_importance = 0 ;
9951: LD_ADDR_OWVAR 32
9955: PUSH
9956: LD_INT 0
9958: ST_TO_ADDR
// un = CreateHuman ;
9959: LD_ADDR_VAR 0 15
9963: PUSH
9964: CALL_OW 44
9968: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9969: LD_VAR 0 15
9973: PPUSH
9974: LD_VAR 0 9
9978: PPUSH
9979: LD_INT 0
9981: PPUSH
9982: CALL_OW 49
// end ;
9986: GO 9842
9988: POP
9989: POP
// for i = 1 to mortalCount do
9990: LD_ADDR_VAR 0 13
9994: PUSH
9995: DOUBLE
9996: LD_INT 1
9998: DEC
9999: ST_TO_ADDR
10000: LD_VAR 0 6
10004: PUSH
10005: FOR_TO
10006: IFFALSE 10151
// begin uc_side = side ;
10008: LD_ADDR_OWVAR 20
10012: PUSH
10013: LD_VAR 0 1
10017: ST_TO_ADDR
// uc_nation = nation ;
10018: LD_ADDR_OWVAR 21
10022: PUSH
10023: LD_VAR 0 2
10027: ST_TO_ADDR
// hc_gallery =  ;
10028: LD_ADDR_OWVAR 33
10032: PUSH
10033: LD_STRING 
10035: ST_TO_ADDR
// hc_name =  ;
10036: LD_ADDR_OWVAR 26
10040: PUSH
10041: LD_STRING 
10043: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
10044: LD_ADDR_OWVAR 29
10048: PUSH
10049: LD_INT 10
10051: PUSH
10052: LD_INT 10
10054: PUSH
10055: EMPTY
10056: LIST
10057: LIST
10058: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
10059: LD_ADDR_OWVAR 31
10063: PUSH
10064: LD_VAR 0 8
10068: PUSH
10069: LD_VAR 0 8
10073: PUSH
10074: LD_VAR 0 8
10078: PUSH
10079: LD_VAR 0 8
10083: PUSH
10084: EMPTY
10085: LIST
10086: LIST
10087: LIST
10088: LIST
10089: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10090: LD_ADDR_OWVAR 27
10094: PUSH
10095: LD_INT 1
10097: PPUSH
10098: LD_INT 2
10100: PPUSH
10101: CALL_OW 12
10105: ST_TO_ADDR
// hc_class = 8 ;
10106: LD_ADDR_OWVAR 28
10110: PUSH
10111: LD_INT 8
10113: ST_TO_ADDR
// hc_importance = 0 ;
10114: LD_ADDR_OWVAR 32
10118: PUSH
10119: LD_INT 0
10121: ST_TO_ADDR
// un = CreateHuman ;
10122: LD_ADDR_VAR 0 15
10126: PUSH
10127: CALL_OW 44
10131: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
10132: LD_VAR 0 15
10136: PPUSH
10137: LD_VAR 0 9
10141: PPUSH
10142: LD_INT 0
10144: PPUSH
10145: CALL_OW 49
// end ;
10149: GO 10005
10151: POP
10152: POP
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
10153: LD_ADDR_VAR 0 18
10157: PUSH
10158: LD_INT 22
10160: PUSH
10161: LD_VAR 0 1
10165: PUSH
10166: EMPTY
10167: LIST
10168: LIST
10169: PUSH
10170: LD_INT 2
10172: PUSH
10173: LD_INT 25
10175: PUSH
10176: LD_INT 1
10178: PUSH
10179: EMPTY
10180: LIST
10181: LIST
10182: PUSH
10183: LD_INT 25
10185: PUSH
10186: LD_INT 5
10188: PUSH
10189: EMPTY
10190: LIST
10191: LIST
10192: PUSH
10193: LD_INT 25
10195: PUSH
10196: LD_INT 8
10198: PUSH
10199: EMPTY
10200: LIST
10201: LIST
10202: PUSH
10203: LD_INT 25
10205: PUSH
10206: LD_INT 9
10208: PUSH
10209: EMPTY
10210: LIST
10211: LIST
10212: PUSH
10213: EMPTY
10214: LIST
10215: LIST
10216: LIST
10217: LIST
10218: LIST
10219: PUSH
10220: EMPTY
10221: LIST
10222: LIST
10223: PPUSH
10224: CALL_OW 69
10228: ST_TO_ADDR
// medic_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] ] ) ;
10229: LD_ADDR_VAR 0 17
10233: PUSH
10234: LD_INT 22
10236: PUSH
10237: LD_VAR 0 1
10241: PUSH
10242: EMPTY
10243: LIST
10244: LIST
10245: PUSH
10246: LD_INT 25
10248: PUSH
10249: LD_INT 4
10251: PUSH
10252: EMPTY
10253: LIST
10254: LIST
10255: PUSH
10256: EMPTY
10257: LIST
10258: LIST
10259: PPUSH
10260: CALL_OW 69
10264: ST_TO_ADDR
// for i in medic_list do
10265: LD_ADDR_VAR 0 13
10269: PUSH
10270: LD_VAR 0 17
10274: PUSH
10275: FOR_IN
10276: IFFALSE 10294
// ComMoveToArea ( i , healArea ) ;
10278: LD_VAR 0 13
10282: PPUSH
10283: LD_VAR 0 10
10287: PPUSH
10288: CALL_OW 113
10292: GO 10275
10294: POP
10295: POP
// repeat wait ( 0 0$1 ) ;
10296: LD_INT 35
10298: PPUSH
10299: CALL_OW 67
// damageUnit_list = FilterAllUnits ( [ [ f_side , side ] , [ f_and , [ f_not , [ f_lives , 550 ] ] , [ f_lives , 250 ] ] ] ) ;
10303: LD_ADDR_VAR 0 16
10307: PUSH
10308: LD_INT 22
10310: PUSH
10311: LD_VAR 0 1
10315: PUSH
10316: EMPTY
10317: LIST
10318: LIST
10319: PUSH
10320: LD_INT 1
10322: PUSH
10323: LD_INT 3
10325: PUSH
10326: LD_INT 24
10328: PUSH
10329: LD_INT 550
10331: PUSH
10332: EMPTY
10333: LIST
10334: LIST
10335: PUSH
10336: EMPTY
10337: LIST
10338: LIST
10339: PUSH
10340: LD_INT 24
10342: PUSH
10343: LD_INT 250
10345: PUSH
10346: EMPTY
10347: LIST
10348: LIST
10349: PUSH
10350: EMPTY
10351: LIST
10352: LIST
10353: LIST
10354: PUSH
10355: EMPTY
10356: LIST
10357: LIST
10358: PPUSH
10359: CALL_OW 69
10363: ST_TO_ADDR
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] , [ f_lives , 1000 ] ] ) ;
10364: LD_ADDR_VAR 0 18
10368: PUSH
10369: LD_INT 22
10371: PUSH
10372: LD_VAR 0 1
10376: PUSH
10377: EMPTY
10378: LIST
10379: LIST
10380: PUSH
10381: LD_INT 2
10383: PUSH
10384: LD_INT 25
10386: PUSH
10387: LD_INT 1
10389: PUSH
10390: EMPTY
10391: LIST
10392: LIST
10393: PUSH
10394: LD_INT 25
10396: PUSH
10397: LD_INT 5
10399: PUSH
10400: EMPTY
10401: LIST
10402: LIST
10403: PUSH
10404: LD_INT 25
10406: PUSH
10407: LD_INT 8
10409: PUSH
10410: EMPTY
10411: LIST
10412: LIST
10413: PUSH
10414: LD_INT 25
10416: PUSH
10417: LD_INT 9
10419: PUSH
10420: EMPTY
10421: LIST
10422: LIST
10423: PUSH
10424: EMPTY
10425: LIST
10426: LIST
10427: LIST
10428: LIST
10429: LIST
10430: PUSH
10431: LD_INT 24
10433: PUSH
10434: LD_INT 1000
10436: PUSH
10437: EMPTY
10438: LIST
10439: LIST
10440: PUSH
10441: EMPTY
10442: LIST
10443: LIST
10444: LIST
10445: PPUSH
10446: CALL_OW 69
10450: ST_TO_ADDR
// for i in soldiersOK_list do
10451: LD_ADDR_VAR 0 13
10455: PUSH
10456: LD_VAR 0 18
10460: PUSH
10461: FOR_IN
10462: IFFALSE 10638
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
10464: LD_ADDR_VAR 0 21
10468: PUSH
10469: LD_INT 81
10471: PUSH
10472: LD_VAR 0 1
10476: PUSH
10477: EMPTY
10478: LIST
10479: LIST
10480: PPUSH
10481: CALL_OW 69
10485: PPUSH
10486: LD_VAR 0 13
10490: PPUSH
10491: CALL_OW 74
10495: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
10496: LD_ADDR_VAR 0 22
10500: PUSH
10501: LD_INT 81
10503: PUSH
10504: LD_VAR 0 1
10508: PUSH
10509: EMPTY
10510: LIST
10511: LIST
10512: PUSH
10513: LD_INT 2
10515: PUSH
10516: LD_INT 59
10518: PUSH
10519: EMPTY
10520: LIST
10521: PUSH
10522: LD_INT 21
10524: PUSH
10525: LD_INT 1
10527: PUSH
10528: EMPTY
10529: LIST
10530: LIST
10531: PUSH
10532: LD_INT 21
10534: PUSH
10535: LD_INT 2
10537: PUSH
10538: EMPTY
10539: LIST
10540: LIST
10541: PUSH
10542: EMPTY
10543: LIST
10544: LIST
10545: LIST
10546: LIST
10547: PUSH
10548: EMPTY
10549: LIST
10550: LIST
10551: PUSH
10552: EMPTY
10553: LIST
10554: PPUSH
10555: CALL_OW 69
10559: PPUSH
10560: LD_VAR 0 13
10564: PPUSH
10565: CALL_OW 74
10569: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
10570: LD_VAR 0 13
10574: PPUSH
10575: LD_VAR 0 21
10579: PPUSH
10580: CALL_OW 296
10584: PUSH
10585: LD_INT 8
10587: PLUS
10588: PUSH
10589: LD_VAR 0 13
10593: PPUSH
10594: LD_VAR 0 22
10598: PPUSH
10599: CALL_OW 296
10603: LESS
10604: IFFALSE 10622
// begin ComAttackUnit ( i , target1 ) ;
10606: LD_VAR 0 13
10610: PPUSH
10611: LD_VAR 0 21
10615: PPUSH
10616: CALL_OW 115
// end else
10620: GO 10636
// begin ComAttackUnit ( i , target2 ) ;
10622: LD_VAR 0 13
10626: PPUSH
10627: LD_VAR 0 22
10631: PPUSH
10632: CALL_OW 115
// end ; end ;
10636: GO 10461
10638: POP
10639: POP
// until soldiersOK_list = [ ] ;
10640: LD_VAR 0 18
10644: PUSH
10645: EMPTY
10646: EQUAL
10647: IFFALSE 10296
// end ; end_of_file
10649: LD_VAR 0 12
10653: RET
// var respawn , inqueue ; export function init_respawning ; begin
10654: LD_INT 0
10656: PPUSH
// respawn := Rand ( 1 , 8 ) ;
10657: LD_ADDR_LOC 9
10661: PUSH
10662: LD_INT 1
10664: PPUSH
10665: LD_INT 8
10667: PPUSH
10668: CALL_OW 12
10672: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
10673: LD_ADDR_LOC 10
10677: PUSH
10678: LD_INT 0
10680: PUSH
10681: LD_INT 0
10683: PUSH
10684: LD_INT 0
10686: PUSH
10687: LD_INT 0
10689: PUSH
10690: LD_INT 0
10692: PUSH
10693: LD_INT 0
10695: PUSH
10696: LD_INT 0
10698: PUSH
10699: LD_INT 0
10701: PUSH
10702: EMPTY
10703: LIST
10704: LIST
10705: LIST
10706: LIST
10707: LIST
10708: LIST
10709: LIST
10710: LIST
10711: ST_TO_ADDR
// end ;
10712: LD_VAR 0 1
10716: RET
// every 0 0$1 + 0 0$0.5 do var n , building_list , aktresp , b ;
10717: GO 10719
10719: DISABLE
10720: LD_INT 0
10722: PPUSH
10723: PPUSH
10724: PPUSH
10725: PPUSH
// begin if respawning_time_max = 0 then
10726: LD_EXP 20
10730: PUSH
10731: LD_INT 0
10733: EQUAL
10734: IFFALSE 10738
// exit ;
10736: GO 11245
// if respawn = 8 then
10738: LD_LOC 9
10742: PUSH
10743: LD_INT 8
10745: EQUAL
10746: IFFALSE 10758
// respawn := 1 else
10748: LD_ADDR_LOC 9
10752: PUSH
10753: LD_INT 1
10755: ST_TO_ADDR
10756: GO 10772
// respawn := respawn + 1 ;
10758: LD_ADDR_LOC 9
10762: PUSH
10763: LD_LOC 9
10767: PUSH
10768: LD_INT 1
10770: PLUS
10771: ST_TO_ADDR
// if Side_Positions [ respawn ] and not inqueue [ respawn ] then
10772: LD_EXP 25
10776: PUSH
10777: LD_LOC 9
10781: ARRAY
10782: PUSH
10783: LD_LOC 10
10787: PUSH
10788: LD_LOC 9
10792: ARRAY
10793: NOT
10794: AND
10795: IFFALSE 11244
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
10797: LD_ADDR_VAR 0 1
10801: PUSH
10802: LD_INT 21
10804: PUSH
10805: LD_INT 1
10807: PUSH
10808: EMPTY
10809: LIST
10810: LIST
10811: PUSH
10812: LD_INT 22
10814: PUSH
10815: LD_LOC 9
10819: PUSH
10820: EMPTY
10821: LIST
10822: LIST
10823: PUSH
10824: LD_INT 3
10826: PUSH
10827: LD_INT 23
10829: PUSH
10830: LD_INT 0
10832: PUSH
10833: EMPTY
10834: LIST
10835: LIST
10836: PUSH
10837: EMPTY
10838: LIST
10839: LIST
10840: LIST
10841: LIST
10842: PPUSH
10843: CALL_OW 69
10847: ST_TO_ADDR
// if n < number_of_people then
10848: LD_VAR 0 1
10852: PUSH
10853: LD_EXP 11
10857: LESS
10858: IFFALSE 11241
// begin aktresp := respawn ;
10860: LD_ADDR_VAR 0 3
10864: PUSH
10865: LD_LOC 9
10869: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , true ) ;
10870: LD_ADDR_LOC 10
10874: PUSH
10875: LD_LOC 10
10879: PPUSH
10880: LD_VAR 0 3
10884: PPUSH
10885: LD_INT 1
10887: PPUSH
10888: CALL_OW 1
10892: ST_TO_ADDR
// enable ;
10893: ENABLE
// wait ( rand ( respawning_time_min , respawning_time_max ) ) ;
10894: LD_EXP 19
10898: PPUSH
10899: LD_EXP 20
10903: PPUSH
10904: CALL_OW 12
10908: PPUSH
10909: CALL_OW 67
// inqueue := Replace ( inqueue , aktresp , false ) ;
10913: LD_ADDR_LOC 10
10917: PUSH
10918: LD_LOC 10
10922: PPUSH
10923: LD_VAR 0 3
10927: PPUSH
10928: LD_INT 0
10930: PPUSH
10931: CALL_OW 1
10935: ST_TO_ADDR
// building_list = FilterAllUnits ( [ [ f_type , unit_building ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] , [ f_side , aktresp ] ] ) ;
10936: LD_ADDR_VAR 0 2
10940: PUSH
10941: LD_INT 21
10943: PUSH
10944: LD_INT 3
10946: PUSH
10947: EMPTY
10948: LIST
10949: LIST
10950: PUSH
10951: LD_INT 2
10953: PUSH
10954: LD_INT 30
10956: PUSH
10957: LD_INT 0
10959: PUSH
10960: EMPTY
10961: LIST
10962: LIST
10963: PUSH
10964: LD_INT 30
10966: PUSH
10967: LD_INT 1
10969: PUSH
10970: EMPTY
10971: LIST
10972: LIST
10973: PUSH
10974: EMPTY
10975: LIST
10976: LIST
10977: LIST
10978: PUSH
10979: LD_INT 50
10981: PUSH
10982: EMPTY
10983: LIST
10984: PUSH
10985: LD_INT 22
10987: PUSH
10988: LD_VAR 0 3
10992: PUSH
10993: EMPTY
10994: LIST
10995: LIST
10996: PUSH
10997: EMPTY
10998: LIST
10999: LIST
11000: LIST
11001: LIST
11002: PPUSH
11003: CALL_OW 69
11007: ST_TO_ADDR
// if building_list = 0 then
11008: LD_VAR 0 2
11012: PUSH
11013: LD_INT 0
11015: EQUAL
11016: IFFALSE 11061
// building_list = FilterAllUnits ( [ [ f_type , unit_building ] , [ f_ok ] , [ f_side , aktresp ] ] ) ;
11018: LD_ADDR_VAR 0 2
11022: PUSH
11023: LD_INT 21
11025: PUSH
11026: LD_INT 3
11028: PUSH
11029: EMPTY
11030: LIST
11031: LIST
11032: PUSH
11033: LD_INT 50
11035: PUSH
11036: EMPTY
11037: LIST
11038: PUSH
11039: LD_INT 22
11041: PUSH
11042: LD_VAR 0 3
11046: PUSH
11047: EMPTY
11048: LIST
11049: LIST
11050: PUSH
11051: EMPTY
11052: LIST
11053: LIST
11054: LIST
11055: PPUSH
11056: CALL_OW 69
11060: ST_TO_ADDR
// if building_list = 0 then
11061: LD_VAR 0 2
11065: PUSH
11066: LD_INT 0
11068: EQUAL
11069: IFFALSE 11073
// exit ;
11071: GO 11245
// hc_name :=  ;
11073: LD_ADDR_OWVAR 26
11077: PUSH
11078: LD_STRING 
11080: ST_TO_ADDR
// hc_importance := 0 ;
11081: LD_ADDR_OWVAR 32
11085: PUSH
11086: LD_INT 0
11088: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , skill_level div 2 ) ;
11089: LD_INT 0
11091: PPUSH
11092: LD_INT 0
11094: PPUSH
11095: LD_EXP 12
11099: PUSH
11100: LD_INT 2
11102: DIV
11103: PPUSH
11104: CALL_OW 380
// uc_nation := Side_Nations [ aktresp ] ;
11108: LD_ADDR_OWVAR 21
11112: PUSH
11113: LD_EXP 26
11117: PUSH
11118: LD_VAR 0 3
11122: ARRAY
11123: ST_TO_ADDR
// uc_side := aktresp ;
11124: LD_ADDR_OWVAR 20
11128: PUSH
11129: LD_VAR 0 3
11133: ST_TO_ADDR
// b := building_list [ Rand ( 1 , building_list + 0 ) ] ;
11134: LD_ADDR_VAR 0 4
11138: PUSH
11139: LD_VAR 0 2
11143: PUSH
11144: LD_INT 1
11146: PPUSH
11147: LD_VAR 0 2
11151: PUSH
11152: LD_INT 0
11154: PLUS
11155: PPUSH
11156: CALL_OW 12
11160: ARRAY
11161: ST_TO_ADDR
// if GetBType ( b ) in [ b_depot , b_warehouse ] then
11162: LD_VAR 0 4
11166: PPUSH
11167: CALL_OW 266
11171: PUSH
11172: LD_INT 0
11174: PUSH
11175: LD_INT 1
11177: PUSH
11178: EMPTY
11179: LIST
11180: LIST
11181: IN
11182: IFFALSE 11194
// n = 25 else
11184: LD_ADDR_VAR 0 1
11188: PUSH
11189: LD_INT 25
11191: ST_TO_ADDR
11192: GO 11202
// n = 10 ;
11194: LD_ADDR_VAR 0 1
11198: PUSH
11199: LD_INT 10
11201: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , n , true ) ;
11202: CALL_OW 44
11206: PPUSH
11207: LD_VAR 0 4
11211: PPUSH
11212: CALL_OW 250
11216: PPUSH
11217: LD_VAR 0 4
11221: PPUSH
11222: CALL_OW 251
11226: PPUSH
11227: LD_VAR 0 1
11231: PPUSH
11232: LD_INT 1
11234: PPUSH
11235: CALL_OW 50
// end else
11239: GO 11242
// enable ;
11241: ENABLE
// end else
11242: GO 11245
// enable ;
11244: ENABLE
// end ; end_of_file
11245: PPOPN 4
11247: END
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
11248: LD_VAR 0 1
11252: PPUSH
11253: CALL_OW 266
11257: PUSH
11258: LD_INT 0
11260: PUSH
11261: LD_INT 1
11263: PUSH
11264: EMPTY
11265: LIST
11266: LIST
11267: IN
11268: IFFALSE 11293
// SetBName ( b , @ & GetSide ( b ) ) ;
11270: LD_VAR 0 1
11274: PPUSH
11275: LD_STRING @
11277: PUSH
11278: LD_VAR 0 1
11282: PPUSH
11283: CALL_OW 255
11287: STR
11288: PPUSH
11289: CALL_OW 500
// end ;
11293: PPOPN 2
11295: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
11296: LD_VAR 0 1
11300: PPUSH
11301: CALL_OW 266
11305: PUSH
11306: LD_INT 0
11308: PUSH
11309: LD_INT 1
11311: PUSH
11312: EMPTY
11313: LIST
11314: LIST
11315: IN
11316: IFFALSE 11341
// SetBName ( b , @ & GetSide ( b ) ) ;
11318: LD_VAR 0 1
11322: PPUSH
11323: LD_STRING @
11325: PUSH
11326: LD_VAR 0 1
11330: PPUSH
11331: CALL_OW 255
11335: STR
11336: PPUSH
11337: CALL_OW 500
// end ;
11341: PPOPN 3
11343: END
// on UnitDestroyed ( unit ) do begin if GetSide ( unit ) = randomedColors [ 1 ] and GetType ( unit ) = unit_building and GetDistUnitArea ( unit , ArabianBaseArea ) = 0 then
11344: LD_VAR 0 1
11348: PPUSH
11349: CALL_OW 255
11353: PUSH
11354: LD_EXP 43
11358: PUSH
11359: LD_INT 1
11361: ARRAY
11362: EQUAL
11363: PUSH
11364: LD_VAR 0 1
11368: PPUSH
11369: CALL_OW 247
11373: PUSH
11374: LD_INT 3
11376: EQUAL
11377: AND
11378: PUSH
11379: LD_VAR 0 1
11383: PPUSH
11384: LD_INT 3
11386: PPUSH
11387: CALL_OW 299
11391: PUSH
11392: LD_INT 0
11394: EQUAL
11395: AND
11396: IFFALSE 12088
// begin if GetBType ( unit ) = 31 or GetBType ( unit ) = 32 or GetBType ( unit ) = 36 or GetBType ( unit ) = 0 or GetBType ( unit ) = 24 or GetBType ( unit ) = 17 or GetBType ( unit ) = 25 or GetBType ( unit ) = 19 or GetBType ( unit ) = 20 or GetBType ( unit ) = 18 or GetBType ( unit ) = 21 or GetBType ( unit ) = 23 or GetBType ( unit ) = 16 or GetBType ( unit ) = 6 or GetBType ( unit ) = 29 or GetBType ( unit ) = 26 or GetBType ( unit ) = 30 or GetBType ( unit ) = 28 or GetBType ( unit ) = 27 or GetBType ( unit ) = 33 or GetBType ( unit ) = 2 or GetBType ( unit ) = 4 then
11398: LD_VAR 0 1
11402: PPUSH
11403: CALL_OW 266
11407: PUSH
11408: LD_INT 31
11410: EQUAL
11411: PUSH
11412: LD_VAR 0 1
11416: PPUSH
11417: CALL_OW 266
11421: PUSH
11422: LD_INT 32
11424: EQUAL
11425: OR
11426: PUSH
11427: LD_VAR 0 1
11431: PPUSH
11432: CALL_OW 266
11436: PUSH
11437: LD_INT 36
11439: EQUAL
11440: OR
11441: PUSH
11442: LD_VAR 0 1
11446: PPUSH
11447: CALL_OW 266
11451: PUSH
11452: LD_INT 0
11454: EQUAL
11455: OR
11456: PUSH
11457: LD_VAR 0 1
11461: PPUSH
11462: CALL_OW 266
11466: PUSH
11467: LD_INT 24
11469: EQUAL
11470: OR
11471: PUSH
11472: LD_VAR 0 1
11476: PPUSH
11477: CALL_OW 266
11481: PUSH
11482: LD_INT 17
11484: EQUAL
11485: OR
11486: PUSH
11487: LD_VAR 0 1
11491: PPUSH
11492: CALL_OW 266
11496: PUSH
11497: LD_INT 25
11499: EQUAL
11500: OR
11501: PUSH
11502: LD_VAR 0 1
11506: PPUSH
11507: CALL_OW 266
11511: PUSH
11512: LD_INT 19
11514: EQUAL
11515: OR
11516: PUSH
11517: LD_VAR 0 1
11521: PPUSH
11522: CALL_OW 266
11526: PUSH
11527: LD_INT 20
11529: EQUAL
11530: OR
11531: PUSH
11532: LD_VAR 0 1
11536: PPUSH
11537: CALL_OW 266
11541: PUSH
11542: LD_INT 18
11544: EQUAL
11545: OR
11546: PUSH
11547: LD_VAR 0 1
11551: PPUSH
11552: CALL_OW 266
11556: PUSH
11557: LD_INT 21
11559: EQUAL
11560: OR
11561: PUSH
11562: LD_VAR 0 1
11566: PPUSH
11567: CALL_OW 266
11571: PUSH
11572: LD_INT 23
11574: EQUAL
11575: OR
11576: PUSH
11577: LD_VAR 0 1
11581: PPUSH
11582: CALL_OW 266
11586: PUSH
11587: LD_INT 16
11589: EQUAL
11590: OR
11591: PUSH
11592: LD_VAR 0 1
11596: PPUSH
11597: CALL_OW 266
11601: PUSH
11602: LD_INT 6
11604: EQUAL
11605: OR
11606: PUSH
11607: LD_VAR 0 1
11611: PPUSH
11612: CALL_OW 266
11616: PUSH
11617: LD_INT 29
11619: EQUAL
11620: OR
11621: PUSH
11622: LD_VAR 0 1
11626: PPUSH
11627: CALL_OW 266
11631: PUSH
11632: LD_INT 26
11634: EQUAL
11635: OR
11636: PUSH
11637: LD_VAR 0 1
11641: PPUSH
11642: CALL_OW 266
11646: PUSH
11647: LD_INT 30
11649: EQUAL
11650: OR
11651: PUSH
11652: LD_VAR 0 1
11656: PPUSH
11657: CALL_OW 266
11661: PUSH
11662: LD_INT 28
11664: EQUAL
11665: OR
11666: PUSH
11667: LD_VAR 0 1
11671: PPUSH
11672: CALL_OW 266
11676: PUSH
11677: LD_INT 27
11679: EQUAL
11680: OR
11681: PUSH
11682: LD_VAR 0 1
11686: PPUSH
11687: CALL_OW 266
11691: PUSH
11692: LD_INT 33
11694: EQUAL
11695: OR
11696: PUSH
11697: LD_VAR 0 1
11701: PPUSH
11702: CALL_OW 266
11706: PUSH
11707: LD_INT 2
11709: EQUAL
11710: OR
11711: PUSH
11712: LD_VAR 0 1
11716: PPUSH
11717: CALL_OW 266
11721: PUSH
11722: LD_INT 4
11724: EQUAL
11725: OR
11726: IFFALSE 11812
// begin arDestroyedBuildings = arDestroyedBuildings ^ GetBType ( unit ) ;
11728: LD_ADDR_EXP 39
11732: PUSH
11733: LD_EXP 39
11737: PUSH
11738: LD_VAR 0 1
11742: PPUSH
11743: CALL_OW 266
11747: ADD
11748: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetX ( unit ) ;
11749: LD_ADDR_EXP 39
11753: PUSH
11754: LD_EXP 39
11758: PUSH
11759: LD_VAR 0 1
11763: PPUSH
11764: CALL_OW 250
11768: ADD
11769: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetY ( unit ) ;
11770: LD_ADDR_EXP 39
11774: PUSH
11775: LD_EXP 39
11779: PUSH
11780: LD_VAR 0 1
11784: PPUSH
11785: CALL_OW 251
11789: ADD
11790: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetDir ( unit ) ;
11791: LD_ADDR_EXP 39
11795: PUSH
11796: LD_EXP 39
11800: PUSH
11801: LD_VAR 0 1
11805: PPUSH
11806: CALL_OW 254
11810: ADD
11811: ST_TO_ADDR
// end ; if GetBType ( unit ) = 1 then
11812: LD_VAR 0 1
11816: PPUSH
11817: CALL_OW 266
11821: PUSH
11822: LD_INT 1
11824: EQUAL
11825: IFFALSE 11904
// begin arDestroyedBuildings = arDestroyedBuildings ^ 0 ;
11827: LD_ADDR_EXP 39
11831: PUSH
11832: LD_EXP 39
11836: PUSH
11837: LD_INT 0
11839: ADD
11840: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetX ( unit ) ;
11841: LD_ADDR_EXP 39
11845: PUSH
11846: LD_EXP 39
11850: PUSH
11851: LD_VAR 0 1
11855: PPUSH
11856: CALL_OW 250
11860: ADD
11861: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetY ( unit ) ;
11862: LD_ADDR_EXP 39
11866: PUSH
11867: LD_EXP 39
11871: PUSH
11872: LD_VAR 0 1
11876: PPUSH
11877: CALL_OW 251
11881: ADD
11882: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetDir ( unit ) ;
11883: LD_ADDR_EXP 39
11887: PUSH
11888: LD_EXP 39
11892: PUSH
11893: LD_VAR 0 1
11897: PPUSH
11898: CALL_OW 254
11902: ADD
11903: ST_TO_ADDR
// end ; if GetBType ( unit ) = 3 then
11904: LD_VAR 0 1
11908: PPUSH
11909: CALL_OW 266
11913: PUSH
11914: LD_INT 3
11916: EQUAL
11917: IFFALSE 11996
// begin arDestroyedBuildings = arDestroyedBuildings ^ 2 ;
11919: LD_ADDR_EXP 39
11923: PUSH
11924: LD_EXP 39
11928: PUSH
11929: LD_INT 2
11931: ADD
11932: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetX ( unit ) ;
11933: LD_ADDR_EXP 39
11937: PUSH
11938: LD_EXP 39
11942: PUSH
11943: LD_VAR 0 1
11947: PPUSH
11948: CALL_OW 250
11952: ADD
11953: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetY ( unit ) ;
11954: LD_ADDR_EXP 39
11958: PUSH
11959: LD_EXP 39
11963: PUSH
11964: LD_VAR 0 1
11968: PPUSH
11969: CALL_OW 251
11973: ADD
11974: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetDir ( unit ) ;
11975: LD_ADDR_EXP 39
11979: PUSH
11980: LD_EXP 39
11984: PUSH
11985: LD_VAR 0 1
11989: PPUSH
11990: CALL_OW 254
11994: ADD
11995: ST_TO_ADDR
// end ; if GetBType ( unit ) = 5 then
11996: LD_VAR 0 1
12000: PPUSH
12001: CALL_OW 266
12005: PUSH
12006: LD_INT 5
12008: EQUAL
12009: IFFALSE 12088
// begin arDestroyedBuildings = arDestroyedBuildings ^ 4 ;
12011: LD_ADDR_EXP 39
12015: PUSH
12016: LD_EXP 39
12020: PUSH
12021: LD_INT 4
12023: ADD
12024: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetX ( unit ) ;
12025: LD_ADDR_EXP 39
12029: PUSH
12030: LD_EXP 39
12034: PUSH
12035: LD_VAR 0 1
12039: PPUSH
12040: CALL_OW 250
12044: ADD
12045: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetY ( unit ) ;
12046: LD_ADDR_EXP 39
12050: PUSH
12051: LD_EXP 39
12055: PUSH
12056: LD_VAR 0 1
12060: PPUSH
12061: CALL_OW 251
12065: ADD
12066: ST_TO_ADDR
// arDestroyedBuildings = arDestroyedBuildings ^ GetDir ( unit ) ;
12067: LD_ADDR_EXP 39
12071: PUSH
12072: LD_EXP 39
12076: PUSH
12077: LD_VAR 0 1
12081: PPUSH
12082: CALL_OW 254
12086: ADD
12087: ST_TO_ADDR
// end ; end ; end ;
12088: PPOPN 1
12090: END
// on BuildingComplete ( building ) do var i ;
12091: LD_INT 0
12093: PPUSH
// begin if GetSide ( building ) = randomedColors [ 1 ] then
12094: LD_VAR 0 1
12098: PPUSH
12099: CALL_OW 255
12103: PUSH
12104: LD_EXP 43
12108: PUSH
12109: LD_INT 1
12111: ARRAY
12112: EQUAL
12113: IFFALSE 12301
// begin if GetBType ( building ) = 0 or GetBType ( building ) = 2 or GetBType ( building ) = 4 then
12115: LD_VAR 0 1
12119: PPUSH
12120: CALL_OW 266
12124: PUSH
12125: LD_INT 0
12127: EQUAL
12128: PUSH
12129: LD_VAR 0 1
12133: PPUSH
12134: CALL_OW 266
12138: PUSH
12139: LD_INT 2
12141: EQUAL
12142: OR
12143: PUSH
12144: LD_VAR 0 1
12148: PPUSH
12149: CALL_OW 266
12153: PUSH
12154: LD_INT 4
12156: EQUAL
12157: OR
12158: IFFALSE 12169
// ComUpgrade ( building ) ;
12160: LD_VAR 0 1
12164: PPUSH
12165: CALL_OW 146
// if arDestroyedBuildings > 0 then
12169: LD_EXP 39
12173: PUSH
12174: LD_INT 0
12176: GREATER
12177: IFFALSE 12251
// begin arDestroyedBuildings := Delete ( arDestroyedBuildings , 1 ) ;
12179: LD_ADDR_EXP 39
12183: PUSH
12184: LD_EXP 39
12188: PPUSH
12189: LD_INT 1
12191: PPUSH
12192: CALL_OW 3
12196: ST_TO_ADDR
// arDestroyedBuildings := Delete ( arDestroyedBuildings , 1 ) ;
12197: LD_ADDR_EXP 39
12201: PUSH
12202: LD_EXP 39
12206: PPUSH
12207: LD_INT 1
12209: PPUSH
12210: CALL_OW 3
12214: ST_TO_ADDR
// arDestroyedBuildings := Delete ( arDestroyedBuildings , 1 ) ;
12215: LD_ADDR_EXP 39
12219: PUSH
12220: LD_EXP 39
12224: PPUSH
12225: LD_INT 1
12227: PPUSH
12228: CALL_OW 3
12232: ST_TO_ADDR
// arDestroyedBuildings := Delete ( arDestroyedBuildings , 1 ) ;
12233: LD_ADDR_EXP 39
12237: PUSH
12238: LD_EXP 39
12242: PPUSH
12243: LD_INT 1
12245: PPUSH
12246: CALL_OW 3
12250: ST_TO_ADDR
// end ; if GetBType ( building ) = b_bunker then
12251: LD_VAR 0 1
12255: PPUSH
12256: CALL_OW 266
12260: PUSH
12261: LD_INT 32
12263: EQUAL
12264: IFFALSE 12301
// AddComPlaceWeapon ( building , [ 27 , 28 , 25 ] [ Rand ( 1 , 3 ) ] ) ;
12266: LD_VAR 0 1
12270: PPUSH
12271: LD_INT 27
12273: PUSH
12274: LD_INT 28
12276: PUSH
12277: LD_INT 25
12279: PUSH
12280: EMPTY
12281: LIST
12282: LIST
12283: LIST
12284: PUSH
12285: LD_INT 1
12287: PPUSH
12288: LD_INT 3
12290: PPUSH
12291: CALL_OW 12
12295: ARRAY
12296: PPUSH
12297: CALL_OW 208
// end ; end ; end_of_file
12301: PPOPN 2
12303: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
12304: LD_INT 0
12306: PPUSH
12307: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
12308: LD_ADDR_VAR 0 2
12312: PUSH
12313: LD_STRING #Multi1x1-Time
12315: PUSH
12316: LD_OWVAR 1
12320: PUSH
12321: EMPTY
12322: LIST
12323: LIST
12324: ST_TO_ADDR
// Display_Strings := AllStrings ;
12325: LD_ADDR_OWVAR 47
12329: PUSH
12330: LD_VAR 0 2
12334: ST_TO_ADDR
// end ;
12335: LD_VAR 0 1
12339: RET
// every 0 0$1 do
12340: GO 12342
12342: DISABLE
// begin ShowTimer ;
12343: CALL 12304 0 0
// enable ;
12347: ENABLE
// end ; end_of_file
12348: END
// every 0 0$1 do
12349: GO 12351
12351: DISABLE
// begin ResAllTechs ( randomedColors [ 1 ] , arlab1 , 3 ) ;
12352: LD_EXP 43
12356: PUSH
12357: LD_INT 1
12359: ARRAY
12360: PPUSH
12361: LD_INT 11
12363: PPUSH
12364: LD_INT 3
12366: PPUSH
12367: CALL 5369 0 3
// ResAllTechs ( randomedColors [ 1 ] , arlab2 , 3 ) ;
12371: LD_EXP 43
12375: PUSH
12376: LD_INT 1
12378: ARRAY
12379: PPUSH
12380: LD_INT 121
12382: PPUSH
12383: LD_INT 3
12385: PPUSH
12386: CALL 5369 0 3
// PlaceMines ( MineField , randomedColors [ 1 ] , 50 ) ;
12390: LD_INT 7
12392: PPUSH
12393: LD_EXP 43
12397: PUSH
12398: LD_INT 1
12400: ARRAY
12401: PPUSH
12402: LD_INT 50
12404: PPUSH
12405: CALL 5638 0 3
// end ;
12409: END
// every 0 0$3 trigger FilterAllUnits ( [ f_side , randomedColors [ 1 ] ] ) > 0 do
12410: LD_INT 22
12412: PUSH
12413: LD_EXP 43
12417: PUSH
12418: LD_INT 1
12420: ARRAY
12421: PUSH
12422: EMPTY
12423: LIST
12424: LIST
12425: PPUSH
12426: CALL_OW 69
12430: PUSH
12431: LD_INT 0
12433: GREATER
12434: IFFALSE 12566
12436: GO 12438
12438: DISABLE
// begin EnterBunkerOrBarrack ( randomedColors [ 1 ] , ArabianBaseArea ) ;
12439: LD_EXP 43
12443: PUSH
12444: LD_INT 1
12446: ARRAY
12447: PPUSH
12448: LD_INT 3
12450: PPUSH
12451: CALL 5964 0 2
// RepairAndRebuildBase ( randomedColors [ 1 ] , ardepot , ArabianBaseArea , ardestroyedBuildings ) ;
12455: LD_EXP 43
12459: PUSH
12460: LD_INT 1
12462: ARRAY
12463: PPUSH
12464: LD_INT 12
12466: PPUSH
12467: LD_INT 3
12469: PPUSH
12470: LD_EXP 39
12474: PPUSH
12475: CALL 6367 0 4
// HealUnitInBase ( randomedColors [ 1 ] , ArabianBaseArea , ArabianBaseArea , [ arlab1 , arlab2 ] ) ;
12479: LD_EXP 43
12483: PUSH
12484: LD_INT 1
12486: ARRAY
12487: PPUSH
12488: LD_INT 3
12490: PPUSH
12491: LD_INT 3
12493: PPUSH
12494: LD_INT 11
12496: PUSH
12497: LD_INT 121
12499: PUSH
12500: EMPTY
12501: LIST
12502: LIST
12503: PPUSH
12504: CALL 6725 0 4
// LinkRemoteVehicle ( randomedColors [ 1 ] , ArabianBaseArea , arcontrol1 ) ;
12508: LD_EXP 43
12512: PUSH
12513: LD_INT 1
12515: ARRAY
12516: PPUSH
12517: LD_INT 3
12519: PPUSH
12520: LD_INT 163
12522: PPUSH
12523: CALL 5454 0 3
// LinkRemoteVehicle ( randomedColors [ 1 ] , ArabianBaseArea , arcontrol2 ) ;
12527: LD_EXP 43
12531: PUSH
12532: LD_INT 1
12534: ARRAY
12535: PPUSH
12536: LD_INT 3
12538: PPUSH
12539: LD_INT 159
12541: PPUSH
12542: CALL 5454 0 3
// LinkRemoteVehicle ( randomedColors [ 1 ] , ArabianBaseArea , arcontrol3 ) ;
12546: LD_EXP 43
12550: PUSH
12551: LD_INT 1
12553: ARRAY
12554: PPUSH
12555: LD_INT 3
12557: PPUSH
12558: LD_INT 160
12560: PPUSH
12561: CALL 5454 0 3
// enable ;
12565: ENABLE
// end ;
12566: END
// every 6 6$0 + 5 5$0 do
12567: GO 12569
12569: DISABLE
// begin AddComConstruct ( arfab , 14 , 3 , 2 , [ 28 , 27 , 29 ] [ Rand ( 1 , 3 ) ] ) ;
12570: LD_INT 10
12572: PPUSH
12573: LD_INT 14
12575: PPUSH
12576: LD_INT 3
12578: PPUSH
12579: LD_INT 2
12581: PPUSH
12582: LD_INT 28
12584: PUSH
12585: LD_INT 27
12587: PUSH
12588: LD_INT 29
12590: PUSH
12591: EMPTY
12592: LIST
12593: LIST
12594: LIST
12595: PUSH
12596: LD_INT 1
12598: PPUSH
12599: LD_INT 3
12601: PPUSH
12602: CALL_OW 12
12606: ARRAY
12607: PPUSH
12608: CALL_OW 185
// AddComConstruct ( arfab , 14 , 3 , 2 , [ 28 , 27 , 29 ] [ Rand ( 1 , 3 ) ] ) ;
12612: LD_INT 10
12614: PPUSH
12615: LD_INT 14
12617: PPUSH
12618: LD_INT 3
12620: PPUSH
12621: LD_INT 2
12623: PPUSH
12624: LD_INT 28
12626: PUSH
12627: LD_INT 27
12629: PUSH
12630: LD_INT 29
12632: PUSH
12633: EMPTY
12634: LIST
12635: LIST
12636: LIST
12637: PUSH
12638: LD_INT 1
12640: PPUSH
12641: LD_INT 3
12643: PPUSH
12644: CALL_OW 12
12648: ARRAY
12649: PPUSH
12650: CALL_OW 185
// AddComConstruct ( arfab , 14 , 3 , 2 , [ 28 , 27 , 29 ] [ Rand ( 1 , 3 ) ] ) ;
12654: LD_INT 10
12656: PPUSH
12657: LD_INT 14
12659: PPUSH
12660: LD_INT 3
12662: PPUSH
12663: LD_INT 2
12665: PPUSH
12666: LD_INT 28
12668: PUSH
12669: LD_INT 27
12671: PUSH
12672: LD_INT 29
12674: PUSH
12675: EMPTY
12676: LIST
12677: LIST
12678: LIST
12679: PUSH
12680: LD_INT 1
12682: PPUSH
12683: LD_INT 3
12685: PPUSH
12686: CALL_OW 12
12690: ARRAY
12691: PPUSH
12692: CALL_OW 185
// AddComConstruct ( arfab , 14 , 3 , 2 , [ 28 , 27 , 29 ] [ Rand ( 1 , 3 ) ] ) ;
12696: LD_INT 10
12698: PPUSH
12699: LD_INT 14
12701: PPUSH
12702: LD_INT 3
12704: PPUSH
12705: LD_INT 2
12707: PPUSH
12708: LD_INT 28
12710: PUSH
12711: LD_INT 27
12713: PUSH
12714: LD_INT 29
12716: PUSH
12717: EMPTY
12718: LIST
12719: LIST
12720: LIST
12721: PUSH
12722: LD_INT 1
12724: PPUSH
12725: LD_INT 3
12727: PPUSH
12728: CALL_OW 12
12732: ARRAY
12733: PPUSH
12734: CALL_OW 185
// enable ;
12738: ENABLE
// end ;
12739: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_type , unit_vehicle ] , [ f_lives , 250 ] ] ) >= 7 do
12740: LD_INT 22
12742: PUSH
12743: LD_EXP 43
12747: PUSH
12748: LD_INT 1
12750: ARRAY
12751: PUSH
12752: EMPTY
12753: LIST
12754: LIST
12755: PUSH
12756: LD_INT 21
12758: PUSH
12759: LD_INT 2
12761: PUSH
12762: EMPTY
12763: LIST
12764: LIST
12765: PUSH
12766: LD_INT 24
12768: PUSH
12769: LD_INT 250
12771: PUSH
12772: EMPTY
12773: LIST
12774: LIST
12775: PUSH
12776: EMPTY
12777: LIST
12778: LIST
12779: LIST
12780: PPUSH
12781: CALL_OW 69
12785: PUSH
12786: LD_INT 7
12788: GREATEREQUAL
12789: IFFALSE 12808
12791: GO 12793
12793: DISABLE
// begin EnemyVehicleAttack ( randomedColors [ 1 ] ) ;
12794: LD_EXP 43
12798: PUSH
12799: LD_INT 1
12801: ARRAY
12802: PPUSH
12803: CALL 7344 0 1
// enable ;
12807: ENABLE
// end ;
12808: END
// every 0 0$1 trigger arabianMines do var i ;
12809: LD_EXP 42
12813: IFFALSE 12940
12815: GO 12817
12817: DISABLE
12818: LD_INT 0
12820: PPUSH
// begin enable ;
12821: ENABLE
// for i in arabianMines do
12822: LD_ADDR_VAR 0 1
12826: PUSH
12827: LD_EXP 42
12831: PUSH
12832: FOR_IN
12833: IFFALSE 12938
// begin if FilterAllUnits ( [ [ f_enemy , randomedColors [ 1 ] ] , [ f_distxy , i [ 1 ] , i [ 2 ] , 3 ] ] ) then
12835: LD_INT 81
12837: PUSH
12838: LD_EXP 43
12842: PUSH
12843: LD_INT 1
12845: ARRAY
12846: PUSH
12847: EMPTY
12848: LIST
12849: LIST
12850: PUSH
12851: LD_INT 92
12853: PUSH
12854: LD_VAR 0 1
12858: PUSH
12859: LD_INT 1
12861: ARRAY
12862: PUSH
12863: LD_VAR 0 1
12867: PUSH
12868: LD_INT 2
12870: ARRAY
12871: PUSH
12872: LD_INT 3
12874: PUSH
12875: EMPTY
12876: LIST
12877: LIST
12878: LIST
12879: LIST
12880: PUSH
12881: EMPTY
12882: LIST
12883: LIST
12884: PPUSH
12885: CALL_OW 69
12889: IFFALSE 12936
// begin LaunchMineAtPos ( i [ 1 ] , i [ 2 ] , 5 ) ;
12891: LD_VAR 0 1
12895: PUSH
12896: LD_INT 1
12898: ARRAY
12899: PPUSH
12900: LD_VAR 0 1
12904: PUSH
12905: LD_INT 2
12907: ARRAY
12908: PPUSH
12909: LD_INT 5
12911: PPUSH
12912: CALL_OW 456
// arabianMines := Delete ( arabianMines , i ) ;
12916: LD_ADDR_EXP 42
12920: PUSH
12921: LD_EXP 42
12925: PPUSH
12926: LD_VAR 0 1
12930: PPUSH
12931: CALL_OW 3
12935: ST_TO_ADDR
// end ; end ;
12936: GO 12832
12938: POP
12939: POP
// end ; end_of_file
12940: PPOPN 1
12942: END
// every 0 0$10 trigger IsInArea ( Gossudarov , GossExit ) do
12943: LD_EXP 41
12947: PPUSH
12948: LD_INT 6
12950: PPUSH
12951: CALL_OW 308
12955: IFFALSE 12964
12957: GO 12959
12959: DISABLE
// YouWinInMultiplayer ;
12960: CALL_OW 106
12964: END
// every 0 0$10 trigger IsDead ( Gossudarov ) do
12965: LD_EXP 41
12969: PPUSH
12970: CALL_OW 301
12974: IFFALSE 12983
12976: GO 12978
12978: DISABLE
// YouLostInMultiplayer ;
12979: CALL_OW 107
12983: END
// every 0 0$1 trigger GetSide ( Gossudarov ) = sideP1 do
12984: LD_EXP 41
12988: PPUSH
12989: CALL_OW 255
12993: PUSH
12994: LD_EXP 44
12998: EQUAL
12999: IFFALSE 13069
13001: GO 13003
13003: DISABLE
// begin RespawnAttackVehicle ( AttackSpawn , randomedColors [ 2 ] , 4 , difficulty_level , 2 , 3 , [ 1 , 1 ] , [ ] , [ 27 , 25 , 26 , 28 ] , [ ] , 1 ) ;
13004: LD_INT 5
13006: PPUSH
13007: LD_EXP 43
13011: PUSH
13012: LD_INT 2
13014: ARRAY
13015: PPUSH
13016: LD_INT 4
13018: PPUSH
13019: LD_EXP 38
13023: PPUSH
13024: LD_INT 2
13026: PPUSH
13027: LD_INT 3
13029: PPUSH
13030: LD_INT 1
13032: PUSH
13033: LD_INT 1
13035: PUSH
13036: EMPTY
13037: LIST
13038: LIST
13039: PPUSH
13040: EMPTY
13041: PPUSH
13042: LD_INT 27
13044: PUSH
13045: LD_INT 25
13047: PUSH
13048: LD_INT 26
13050: PUSH
13051: LD_INT 28
13053: PUSH
13054: EMPTY
13055: LIST
13056: LIST
13057: LIST
13058: LIST
13059: PPUSH
13060: EMPTY
13061: PPUSH
13062: LD_INT 1
13064: PPUSH
13065: CALL 7777 0 11
// end ;
13069: END
// every 0 0$1 trigger GetSide ( Gossudarov ) = sideP1 do
13070: LD_EXP 41
13074: PPUSH
13075: CALL_OW 255
13079: PUSH
13080: LD_EXP 44
13084: EQUAL
13085: IFFALSE 13135
13087: GO 13089
13089: DISABLE
// begin RespawnAttackInfantry ( randomedColors [ 2 ] , 2 , 5 , 0 , 0 , 3 , 0 , difficulty_level , AttackSpawn , AttackSpawn , 1 ) ;
13090: LD_EXP 43
13094: PUSH
13095: LD_INT 2
13097: ARRAY
13098: PPUSH
13099: LD_INT 2
13101: PPUSH
13102: LD_INT 5
13104: PPUSH
13105: LD_INT 0
13107: PPUSH
13108: LD_INT 0
13110: PPUSH
13111: LD_INT 3
13113: PPUSH
13114: LD_INT 0
13116: PPUSH
13117: LD_EXP 38
13121: PPUSH
13122: LD_INT 5
13124: PPUSH
13125: LD_INT 5
13127: PPUSH
13128: LD_INT 1
13130: PPUSH
13131: CALL 9496 0 11
// end ;
13135: END
// every 0 0$1 trigger IsPlaced ( Gossudarov ) and not IsInUnit ( Gossudarov ) and initEnd do
13136: LD_EXP 41
13140: PPUSH
13141: CALL_OW 305
13145: PUSH
13146: LD_EXP 41
13150: PPUSH
13151: CALL_OW 310
13155: NOT
13156: AND
13157: PUSH
13158: LD_EXP 52
13162: AND
13163: IFFALSE 13192
13165: GO 13167
13167: DISABLE
// begin SetSide ( Gossudarov , sideP1 ) ;
13168: LD_EXP 41
13172: PPUSH
13173: LD_EXP 44
13177: PPUSH
13178: CALL_OW 235
// SetAreaMapShow ( GossExit , 1 ) ;
13182: LD_INT 6
13184: PPUSH
13185: LD_INT 1
13187: PPUSH
13188: CALL_OW 424
// end ;
13192: END
